2013-11-14 1 views
1

그래서 "패턴"에 포함이 정규 표현식은 다음과 만 나는((xn -)? [a-z0-9] + (- [a-z0-9] +) * .) + [az] {2}는 regexpal.com에서는 작동하지만 jsfiddle에서는 작동하지 않습니다. 순

var link = "Help" 
// matches www-data.it -- needs at least (1 letter + '.' + 2 letters) 
var pattern = '((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}'; 
var re2 = new RegExp('^' + pattern, 'i'); 


// if no http and there is something.something 
if (link.search(re2) == 0) 
{ 
    link = link; 
} 
(가장 기본적인 일치 한 편지 점으로 추적 한 다음 두 글자 인 상태) 아래의 코멘트에 말과 일치하도록되어

이 코드를 테스트 할 때 @http://regexpal.com/ 예를 들어 작동합니다. 오직 무언가. 무언가.

JSFiddle에서 테스트하고 프로덕션 환경에서 테스트 할 때, 예를 들어 "도움말"이 일치합니다. http://jsfiddle.net/2jU4D/

무슨 거래인가요?

답변

5

당신은 기본 정규식 구문으로 정규 표현식을 구성해야합니다 특히

var re2 = /^((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}/i; 

\.를 정규 표현식에서 당신이 new RegExp()를 호출 할 때까지는 그냥 평범한 .처럼 보일 것입니다. 문자열 문법은 또한 인용에 백 슬래시를 사용하므로 표현식이 문자열로 처음 구문 분석 될 때 백 슬래시가 "먹게"됩니다.

또는

: 적절한 문자열로 당신을 떠날 것입니다 백 슬래시를 두 배로

var pattern = '((xn--)?[a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}'; 
var re2 = new RegExp('^' + pattern, 'i'); 

는 정규식 생성자에 전달합니다.

1

다음은 일치하는 항목의 분석입니다. 모든 캡처 그룹을 캡처하지 않는 그룹으로 바꿀 것입니다. 그리고 모든 앵커를 정규식의 본문에 두십시오 (나중에 추가하지 마십시오).

정규식이 유효하거나 구분 기호 또는 사용 방법을 알지 못합니다.
필요한 부분에주의를 기울여 정확히 일치하지 않는 것을 볼 수 있지만
정규식으로 인해 생각하지 않습니다.

(      # (1 start) 
     (xn--)?     # (2), optional capture 'xn--' 
     [a-z0-9]+     # many lower case letters or digits 
     (- [a-z0-9]+)*   # (3), optional many captures of '-' followed by many lower case letters or digits 
     \.      # a dot '.' 
)+      # (1 end), overwrite this capture buffer many times 
[a-z]{2,}     # Two or more lower case letters 
+0

Pointy는 이미 13 분 전에 원인을 지적했습니다. 아마도 당신이 그것을 놓친? – BalusC

+0

나는 그의 게시물을 읽지 않았지만 의견을 타이핑했다. 놓친 게 있니? – sln

+0

죄송합니다. 50 명이 넘는 담당자가있는 사람이 의견으로 답변하는 대신 답변으로 의견을 게시 할 것으로 기대하지 않습니다. – BalusC

관련 문제