2013-04-08 6 views
1

자바 스크립트에서 regex로 문자열의 유효성을 검사하려고합니다. 문자열은 가질 수 있습니다단어 문자, 괄호, 공백 및 하이픈을 허용하는 정규식

  • 단어 문자
  • 괄호
  • 공간
  • 하이픈 (-)
  • 3

길이 50 ​​여기 내 시도입니다 :

function validate(value, regex) { 
    return value.toString().match(regex); 
} 

validate(someString, '^[\w\s/-/(/)]{3,50}$'); 
+2

이스케이프 문자는 몇 가지 테스트를이

function validate(value, re) { return re.test(value.toString()); } 

처럼 유효성 검사기를 작성하고 사용''\''하지''/' '. 그리고 문자열을 사용하고 있기 때문에,''\''를 벗어나야 만합니다 (또는 쉬운 생활을하고 정규 표현식을 사용하십시오). –

+0

네, 올바른 정규 표현식을 사용하면 현재의 정규 표현식이 제대로 작동합니다 – smerny

+0

'\ w'에 정의 된 단어의 문자에는'A-Za-z0-9'가 포함되어 있고'_'에는 밑줄이 있다는 것을 알고 있습니까? – nhahtdh

답변

5

이 정규식

/^[\w() -]{3,50}$/ 

정규 표현식에서

// spaces 
validate("hello world yay spaces", /^[\w() -]{3,50}$/); 
true 

// too short 
validate("ab", /^[\w() -]{3,50}$/); 
false 

// too long 
validate("this is just too long we need it to be shorter than this, ok?", /^[\w() -]{3,50}$/); 
false 

// invalid characters 
validate("you're not allowed to use crazy $ymbols", /^[\w() -]{3,50}$/); 
false 

// parentheses are ok 
validate("(but you can use parentheses)", /^[\w() -]{3,50}$/); 
true 

// and hyphens too 
validate("- and hyphens too", /^[\w() -]{3,50}$/); 
true 
+2

또한 유효성 검사를 원하는 경우에는'RegExp.test()'가 아마도 더 나은 선택이고,'String.match()'일 것입니다. –

+0

이 답변에서'str # match'가 보입니까? 나는'validate' 메쏘드에서're # test'를 사용하고 있습니다. –

+0

질문에 :'return value.toString(). match (regex);'. –

관련 문제