2011-05-12 3 views
0

이 정규 표현식이 작동하는 데 까다로운 시간이 있습니다. 지금까지이 패턴은 다음과 같습니다자바 스크립트에 문제가 있습니다. 정규 표현식

var dollarPattern = /^\d{1,}|\s\d/gi; 

var matchedResults = new Array(); 
matchedResults = textValue.match(dollarPattern); 

은 내가 예제 문자열 "이 2.99로 (63 항목)"을 사용 달성을 기대하고하는 것은, 내가 하나가 숫자로 시작하는지 확인하려는 경우, 또는 공백 문자 뒤에 숫자가옵니다 (이 경우 두 조건이 모두 참입니다). 그러나 Firefox에서 "matchedResults is null"오류가 계속 발생합니다 (길이가 2 여야 함).

내가 잘못하고있는 아이디어가 있습니까? 감사합니다 ...

+3

그 코드에서 또 무슨 일이 벌어지고 있습니까? –

+0

'{1,}'은 (는)'+'와 같습니다. 그게 좀 더 짧고 읽을 수 있습니다. – stema

답변

2

필요한 것은 모두 벗어날 수 있습니다. 크롬, FF4, 그리고 IE8에서

// Please note that this works, but @Lekensteyn pointed out that this uses string literals 
// Also, this will give you the first match(if exists) only. 
alert("2 to 3.99 (63 items)".match("^\\d\|\\s\\d")); 

또는

// This one will give you all possible matches 
alert("2 to 3.99 (63 items)".match(/^\d|\s\d/g)); 
+0

RE를 이해합니까? 정규식 리터럴 대신 문자열 리터럴을 사용할 필요가 없습니다. – Lekensteyn

+0

@ Lekensteyn 아니, 아니 100 %. 나는 그것이 효과가 있었기 때문에 대답을 올렸다. "필요성"은 없지만 사용할 수 없다는 뜻이 아니며 사용하면 작동하지 않을 수도 있습니다. 귀하의 의견 후, 나는 자바 스크립트 RE 기본을 검색하고 대답을 수정했습니다. 어쨌든, 내 첫 downvote 주셔서 감사합니다. :-) – Lobo

0

작품 잘.

정규식 주위에 따옴표를 넣으면 null이됩니다.

그러나 출력은 "2, 2"입니다.