2010-11-25 3 views
0

몇 가지 옵션에 대해 문자열을 테스트 할 수 있도록 정규 표현식 함수를 작성하고 있습니다.Javascript Regex가 선행 및 사후 문자와 일치하는 문자열을 확인합니다.

여기 검색하려는 문자열의 예입니다.

5.6 - 6.6* 
5.6 - 6.6(4) 
<5.6 - 6.6** 

기본적으로 달성하고자하는 것은 이러한 옵션 중 하나의 문자열에 일치하는 것입니다. 이 예에서는 (5.6 - 6.6)과 같은 변수를 전달하고 있음을 명심하십시오. 내 가치 중 일부는 끝에 "*"표시가 있고 그렇지 않은 경우 일부는 그렇지 않기 때문에 테스트 할 필요가 있습니다. 그러나 여전히 일치가 필요합니다. 거기 beggining에 더 "<"입니다 만 존재하는 경우가 늘 값을 찾을 때

MY CODE WHICH WORKS ON "5.6 - 6.6*" 

fieldValuesArray[0] = "5.6 - 6.6" 

myregexp = new RegExp("\\b(<)?"+ fieldValuesArray[0]+"(\\*\\(\\)1234)?\\b") 

testRegEx = myregexp.test("<5.6 - 6.6**") 
    if(testRegEx == false){ 
    hide = "yes" 
} 

그것은 작동합니다.

누군가가 도움을 줄 수 있기를 바랍니다.

답변

1

확인중인 문자열에도 정규식 문자 (예 : '.')가 있어야한다는 것을 기억해야합니다. 문자는 "5^6 - 6 $ 6"과 일치하므로 이스케이프가 필요한 문자가 매칭 될 것임을 의미합니다 (리터럴 기간과 일치 시키려면 '.'로 사용).

다음은 작동하여 세 가지 예를 일치 시키려면 :

.*?5\.6\s-\s6\.6(\*+|\(\d*\)) 

당신은 그냥 공백 문자가 아닌 공백 기간을 탈출 지정한이 볼 수 있습니다. 이렇게하면 정규식의 공백이 아니라 공백 문자가 문자열에 포함됩니다.

관련 문제