2016-09-15 5 views
-1

이 정규식을 사용하여 이름에 문자, 아포스트로피 또는 하이픈 만 사용할 수 있습니다. 내가 정규식이 올바른지 확인하려면이 tool을 사용하는 경우사람들을위한 정규 표현식 PHP

Validator::extend('people_names', function($attribute, $value, $parameters, $validator) { 
     return preg_match("^[a-zA-Z-'\s]+$^", $value); 

, 그것은 올바른 표시되지만 내 양식에 나는 숫자하거나해야하면서 통과 123name 또는 #$#$name 같은 다른 문자로 시작하는 입력을 테스트 할 때 아니. 숫자가 name123 인 입력은 거부됩니다.

+0

[Falsehoods Programmers는 이름에 대해 믿는다] (https://www.kalzumeus.com/2010/06/17/falsehood-programmers-believe-about-names/) –

답변

2

PHP preg_ 함수는 /^으로 시작하고 $/으로 끝나야합니다. 문자열이 마지막에 $를 사용하여 문자로 끝나는 경우, 만 확인하는 당신의 정규식 ^[a-zA-Z-'\s]+$^에서

preg_match("/^[a-zA-Z-'\s]+$/", $value); 
+0

PHP에서는 * 시작할 필요가 없습니다. '/ ^'로 끝나고'$ /'*로 끝나기 만하면,'preg_' 함수는 정규 표현식의 단락 문자를 필요로합니다. –

+1

'^'와'$'는 * pattern *의 일부인 * regex anchor *입니다. 정규 표현식의 구분자는'/'앞과 뒤에 오는 기호입니다. –

1

을하지만, 처음에 ^ 여기 asthe 정규식 구분 사용됩니다

이 시도 , 그것은 또한 결국이기 때문입니다.

나는 같은 # 또는 /을 다른 문자열 구분 기호를 사용하는 것이 좋습니다 것 :

preg_match("#^[a-zA-Z-'\s]+$#", $value) 작동합니다.