2015-01-21 2 views
1

문자열의 유효 가격이 맞는지 확인해야합니다. 일부 지역에서는 "." ","로 구분되며 구분 기호는 수천 또는 수백 개가 될 수 있습니다. 예를 들어 : 유효한 :자바 스크립트에서 Regex를 사용하여 가격 유효성 확인

1234 
1,234 
1.234 
1,23,334 
1.23.334 
1,23,334.00 
1.23.334,00 

잘못된 :

1,23...233 
1,,23 
etc 

정규식 내가 사용하고는

/(\d+(?:[\.,](?![\.,])\d+)*)/g 

하지만이 1,23 "나에게 두 경기를주고있다 .. .233 "i, e"1,23 "과"233 "은 일치로 반환하지 않으려 고합니다. Here은 제가 작업해온 정규 표현식입니다. 있을 때마다 실제로하고 싶은 것. " 또는 ","다음 문자는 "안된다." 또는 ","이며 숫자 여야합니다. 당신이 뭔가를 원하는 것처럼

+0

가'나에게 보인다/\ \ |!.. ,,/테스트 (문자열) '작업을해야한다.. 다른 모든 것이 숫자인지 확인하려면'!/\. \. | ,, \ \ D/.test (string)'. 패턴 중 하나라도 발견되면 표현식은 false를 리턴하고, 그렇지 않으면 true를 리턴합니다. – RobG

+0

Regex 대신 여기에서 플러그인을 사용해야합니다. –

+0

@anubhava, 확인하는 것이 좋습니다. 가격을 선택해야하는 경우, "123,456.00 USD" – saiki4116

답변

1

당신은 간단하게이 작업을 수행 할 수 있습니다.

^\d+(?:[.,]\d+)*$ 

보십시오. 데모를보십시오.

https://regex101.com/r/tX2bH4/61

var re = /^\d+(?:[.,]\d+)*$/gm; 
var str = '1234\n1,234\n1.234\n1,23,334\n1.23.334\n1,23,334.00\n1.23.334,00\n1,23...233\n1,23.'; 
var m; 

while ((m = re.exec(str)) != null) { 
if (m.index === re.lastIndex) { 
re.lastIndex++; 
} 
// View your result using the m-variable. 
// eg m[0] etc. 
} 
+0

은 0.12.3 – rahmanisback

+0

과 일치합니다. @rahmanisback은 쉽게 수정할 수 있습니다 (?! 0 [.,]). 시작시에 넣으십시오. – vks

2

은 고통 연속 쉼표 나 점 또는 포함되지 않습니다 주장

^\d+(?:\.\d+)?(?:,\d+(?:\.\d+)?)*$ 

DEMO

또는 시작시

^(?!.*(,,|,\.|\.,|\.\.))[\d.,]+$ 

부정적 예측, 보인다 점 및 쉼표.

DEMO

관련 문제