2014-11-22 5 views
0

사용자가 영숫자와 점 문자만으로 사용자 이름을 입력하길 원합니다. 그래서 나는 다음과 같은 정규식 패턴을 썼다 :2 개의 정규식 패턴의 차이점은 무엇입니까?

'/([a-zA-Z0-9\.]+)/' 

을하지만 그것은과 동일 알고 싶어 패턴 아래

'/([a-zA-Z0-9.]+)/' 

2는 동일? 도와 줘서 고마워! :-)

+1

내가 아는 한 당신은 도트를 벗어날 필요가 없기 때문에 똑같습니다! – Rizier123

+0

캡처 그룹을 사용할 필요가 없습니다. –

답변

4

문자 클래스 안에있는 도트를 이스케이프 할 필요가 없습니다. 문자 클래스 내에서 . 및 도트 \.의 점은 리터럴 점과 일치합니다. 따라서 두 정규 표현식은 동일합니다.

또한 유효성 검사를 위해 '/^[a-zA-Z0-9.]+$/'과 같은 앵커를 추가하는 것이 좋습니다. 앵커는 정확한 문자열 일치를 수행하는 데 사용됩니다. 즉 /[a-zA-Z0-9.]+/ 정규 표현식은이 ()foo 입력 문자열에서 부분 문자열 foo과 일치하지만 정규 표현식에 /^[a-zA-Z0-9.]+$/과 같이 시작 및 끝 앵커를 추가하면 위에서 언급 한 문자열의 단일 문자와도 일치하지 않습니다. 하나 이상의 영숫자 또는 점 문자 만 일치시킬 수 있습니다. 점 또는 영숫자가 아닌 문자를 찾으면 정규식 엔진이 해당 문자열과 일치하지 않습니다.

+0

정규식 마스터 : D +1! 아주 좋은 대답 – Rizier123

+0

감사합니다, 좋은 대답 !! – Geany

+0

@AvinashRaj 잘못 이해했는데 대답이 잘못되었다고 생각했습니다. 나는 downvote를 제거했다, 나의 잘못. – Nerixel

관련 문제