2012-08-01 3 views
2

저는 자바 스크립트에서 작동하며 텍스트에 몇 가지 징후가 있는지 확인하고 싶습니다. 내 텍스트에() 및 & 자의 글자가 있는지 확인하고 싶거나 글자가 반복되어 있는지 확인하고 싶습니다. 몇 가지 예 :regexp에서 &()와 반복되는 문자를 확인하십시오.

테스트은 - &

테스트 (테스트)가 - -가 (하고), 여러 t 두 번 '전자 여러 t을

TES & t있다 '편지

시험 & (시험 - &와 (복수 t 및 E를 갖는

테스트 & (& t는 - 다수 t 여러 &와 (

테 슬러가있다 -이 하나 그다지 모든 패턴에 맞는

나는 이미 다음과 같이 만들었습니다.

if ((/(\w+)(?=\1)/g).test(str)) alert('multiple signs') 

하지만 하나씩 차례로 표시되는 경우 여러 기호 만 계산하므로 '검사'가 패턴과 테스트에 적합하지 않습니다. 아무도 나를 도울 수 있습니까? 나는 그것은 두 개의 정규 표현식으로 나눌 수 있습니다 :( 모든 정규 표현식 기능을 이해하지 수 않았다.

고맙습니다을 미리

+0

그러면 복잡한 패턴과 가장 잘 어울리는 것이 무엇일까? – Kalreg

답변

1

를 사용하려면 다음

(?:[&()]|(\w)[^\1]*\1) 

function contains_multiple_chars(str, extra) { 
    var chars = {}; 
    for(var i = 0,l = str.length; i < l;i++) { 
     var c = str.charAt(i); 
     if(c in chars || c in extra) { 
      return true; 
     } 
     else { 
      chars[c] = 1; 
     } 
    } 
    return false; 
} 

var multiple = contains_multiple_chars(str, {'(': 1, ')': 1, '&': 1}); 

(나는 함수 남 인정 :

대안은 단순히 문자 반복 검사하고 그들을 계산하는 것 전자가 잘 맞지 않는다.)

+0

도움을 주셔서 감사합니다. 당신의 기능을 사용했습니다. - 저에게 가장 어울립니다. 감사합니다! – Kalreg

2

에 당신은 당신의 예상 검색에 .*를 추가해야합니다.

(\w)(?=.*\1)|[()&] 

를 참조하십시오 here on regexr

또한 문자 클래스를 사용하여 요청한 문자를 포함하도록 변경했습니다. ()&

는 대신 \w의 문자 (ASCII)이 매우 효율적이지 않지만 (이 고정되지 않기 때문에)이, 그것을해야 문자 클래스를

([a-zA-Z])(?=.*\1)|[()&] 
+0

그것은 regexr하지만 unfortunatelly에서 작동합니다. (그리고 나는 이유를 모르지만 - 자바 스크립트에서 작동하지 않습니다.) – Kalreg

관련 문제