2015-02-06 3 views
0

숫자로 시작하고 뒤에 문자가오고 .html로 끝나는 문자열과 일치 시키려합니다.정규 표현식 번호 다음에 임의의 문자가옵니다.

나는 다음 시도했다 : "21212dfsd.htmlfdf.html"2 경기를 말한다 같은 예를 들어

/([0-9]*[^\.html]*.html)/g 

그러나 Regexr! 왜 그런가요?

감사

+0

그것은 "1 개 일치"나에게 말했다. – dasblinkenlight

+0

'[^ \. html]'은 당신이 원하는 것을하지 않습니다. 'html' 앞에 이스케이프 처리되지 않은 점 .'이 있습니다. – dasblinkenlight

+0

숫자를 요구하기 때문에 * 뒤에 숫자를 더하기로 변경하십시오. 오른쪽 상단에 – chris85

답변

1

당신은 문자 클래스 다음 때문에 * 정량의 두 경기를 얻을. *은 앞의 토큰 "0 번 이상"과 일치한다는 것을 의미합니다. 대신 +을 사용하십시오. "하나 이상"을 의미합니다.

전체 단어를 문자 클래스 내에 배치 할 수 없습니다. 문자 클래스는 문자 집합의 임의의 문자와 일치하며 점 .은 이스케이프해야합니다 (문자는입니다) 의미는입니다.

당신은 정규 표현식 아래를 사용할 수 있습니다

/\d+.*?\.html/g 
+0

감사합니다. 그래서 정규 표현식을 사용할 때 하나의 일치를 얻었지만 '/ (\ d +. *? \. html)/g'대신에 $ 1이 왜 returnung 전체 문자열입니까? 다시 한 번 감사드립니다 –

+0

당신이 성냥을 바로 다시 놓기 때문에 그것은 전체 문자열을 돌려줍니다. – hwnd

+0

죄송합니다. 이해하지 못했습니다! '/ \ d +. *? \. html/g'을 사용하지 않아도 일치하는 항목이 하나 있지만 $ 1은 $ 1fdf.html을 반환합니다. 대체 논리를 이해하지 못하는 것 같습니다! –