2011-08-12 3 views
0

약간은을 감지하기 위해 사용해야하는 RegExp와 혼동 스럽습니다. 실제로이 조합을 유효한 것으로 전달하지만 동시에 "-_","_-"도 유효성이 확인됩니다. 뭔가 빠져 있거나 제대로 빠져 나오지 못하고 있습니까?"-.", "-."을 탐지하기위한 JS - RegExp.

var reg=new RegExp("(\.\-)|(\-\.)"); 

실제로 어떤 조합이든 '-'이 전달됩니다. 그것

모두에게 감사를 얻었다.

+0

결과 표현을 알고 싶다면 콘솔에'RegExp ("(\. \ -) ​​| (\ - \.)")'를 복사하십시오. 출력은'/(.-) | (-.) /'이고'.'는 모든 문자와 일치합니다. –

답변

2

당신이 표기법을 사용, 당신은 . 있도록 한 백 슬래시로 이스케이프되지 않습니다 따옴표를 사용하는

"(\\.-)|(-\\.)" 
+0

클리어링을위한 Thx 위로, 많은 의무 – Sleeperson

1

/ 대신 RegExp 생성자가있는 문자열을 사용하고 있으므로 두 번 이스케이프 처리해야합니다.

>>> "asd_-ads".search("(\.\-)|(\-\.)") 
3 
>>> "asd_-ads".search(/(\.\-)|(\-\.)/) 
-1 
>>> "asd_-ads".search(new RegExp('(\\.\-)|(\-\\.)')) 
-1 
+0

이것들은''구분 기호 ''가 아닙니다''''''는'** '를 표현식에 사용하기 때문에 이스케이프해야합니다 –

+0

@Felix 더 정확한 방식으로 설명 드리겠습니다 – sapht

0

를 사용해야합니다 :

표기 /(\.\-)|(\-\.)/에서
var reg = /(\.\-)|(\-\.)/; 
1

, 그 표현은 옳을 것이다. 사용자가 선택한 표기법에서 모든 백 슬래시는 여전히 \\, \n과 같이 자체의 특별한 의미를 갖고 있기 때문에 이중화해야합니다. 당신이 일치하는 항목을 차별화 할 필요가없는 경우에만 경기를 확인하려면 var reg = new RegExp("(\\.-)|(-\\.)");

, 당신은 모든 단일 둘러싸고 캡처, 또는 없음을 사용할 수 있습니다
참고 여기에 대시를 탈출 할 필요가 없다 : "\\.-|-\\."은 여전히 ​​유효합니다.