2012-09-04 2 views
0

내 정규 표현식은 /^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/과 HTML에 나는이 수행 할 때 위의 패턴JQuery와 - 등록하는 문자열로 변환 특급 객체

로 설정 요소의 값을 가진 숨겨진 요소로 추가 :

var regex = /^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/ 
var text = $(this).val() 

그리고 나서 regex.test(text)으로 테스트하면 정상적으로 작동합니다. 나는이 같은 정규 표현식을 할당 할 때

하지만 :

var regex = $("#m"+id).val() // (my hidden element) 

는 다음 작업을 나던. 나는 새로운 RegExp를 사용하여 할당하려고 시도했지만 또한 작동하지 않습니다. 나는 $("#m"+id).val() (올바른 값이 반환 됨)에서 문자열로 값을 반환하기 때문에이 작업을 수행하고 있다고 생각합니다. 그러나 구문 분석의 대상이 확실하지 않습니다.

도움을 주시면 감사하겠습니다.

답변

1

문자열에서 정규 표현식을 작성한 다음 RegExp 클래스의 생성자를 사용하려면 슬래시가없는 문자열이 필요하므로 제거해야합니다. .slice(1, -1)은 첫 번째 및 마지막 charecters를 제거합니다. 이 문제를 사용해보십시오 :

var regex = new RegExp($("#m"+id).val().slice(1, -1)); 
+0

멋지다. 고맙습니다. – user1451517

0

시도 :

var regex = new RegExp($("#m"+id).val()) 
0

시작과 끝의 슬래시 만이 문자 정규식 때 사용된다. 실제 정규식을 얻으려면이 문자열을 제거한 다음 new RegExp(str)을 사용하여 문자열을 정규식 개체로 바꿀 수 있습니다.