유효한 미국 도시 이름을 확인하기 위해 정규식을 사용하고 있습니다. 다음과 같이 내 요구 사항은 다음과 같습니다 특정 특수 문자를 허용하는 미국 도시와 일치하는 정규식
- 은 25 자까지 가능
- 에만 알파 문자와 다음의 특수 문자를 사용할 수 :
',.-
합니다. 거짓을 사용하면
St. Clou$$, [email protected], $t. Thomas
을 사용해야합니다.사실을 사용하면
O'John, St. Cloud, Cov d'Aline, Milt-Freeman
을 사용해야합니다. 다음/(^|\s)[a-zA-Z',.\s-]{1,25}(?=\s|$)((?!\W)[a-zA-Z',.\s-]{1,25}(?=\s|$))?/g
제가 테스트 한 방법은 다음과 같습니다 : 여기
let regex = /(^|\s)[a-zA-Z',.-\s]{1,25}(?=\s|$)((?!\W)[a-zA-Z',.-\s]{1,25}(?=\s|$))?/g;
let str = "St. Clou$$";
let validation = regex.test(str)
if(validation){
return true
} else {
return false }
위의 테스트를 사용하여 정규식 표현은 모두 통과 할 것으로 보인다 그러나 나의 테스트는 또한 St. Clou$$
와 $t. Thomas
를 위해 true
를 돌려주고있다. 여러 단어가 있고 단어 중 하나가 여전히 통과하는 용납 할 수없는 특수 문자가있는 경우처럼 보입니다.
위에서 언급 한 모든 잘못된 조건에 대해 표현식을 false로 만들려면 무엇을 추가해야합니까? 이견있는 사람? 고맙습니다.
첫 번째 -'-'는 문자 클래스 ('[] '내부)에서 특별한 의미를 갖습니다. (^ | \ s) [a-zA-Z ', .- \ s] {1,25} (? = \ s | $)'는 예를 들어's '와 일치하고, 또는''(3 스페이스) - 또는 하나의 문자'C'. 두 번째 부분은 선택 사항입니다 ('((!! \ W) [a-zA-Z ', .- \ s] {1,25} (? = \ s | $))? 그래서 모든 정규 표현식은 true를 반환하기 위해 일치해야합니다 (예를 들어) 언급 된 조합 중 하나입니다. '^'와'$'를 사용하여 문자열의 시작과 끝을 고정시켜야한다. – ClasG
감사합니다. 예. 나는'-'이 내가 올린 즉시 잘못된 위치에 있다는 것을 깨달았다. 도움을 감사하십시오. –