2014-07-11 1 views
0

정규식을 확인하려면 정규식이 필요합니다. 문자열이 포함 된 경우이 하나가 작동정규식의 이름과성에 대한 정규식

preg_match('/^[\p{L}]{4,25}[\s][\p{L}]{4,25}$/u', Form::post('name'))

: 오히려 괜찮

  • word (4-25 chars long and utf8 chars allowed)
  • space
  • word (4-25 chars long and utf8 chars allowed)

을 잘이 내가 생각 해낸 것입니다 ,하지만 너무 많이 c 보인다. optionaly을 또한

  • (word space word){8,50}

: omplex 내 스크립트 에 대한이 같은 조건을 충족하지만 "글로벌"문자는이 같은 대신 범위의 종류를 가지고 있도록 그 정규식을 변환하는 방법은 무엇입니까 일부 외국 사람이 내 사이트를 사용하고자 할 경우에 제 2 공간 및 세 번째 단어를 가질 수

어떤 도움 appriciated됩니다 :) 사실과는 별도로

+1

조 오도넬이 전화를 걸었습니다. 그는 왜 당신이 그를 당신의 웹 사이트에서 갇혀 있는지 알고 싶어합니다. –

+0

왜 이름의 유효성을 검사 하시겠습니까? 나는 나의 실제 성 (중간에 공백이있는 3 단어)도 통과하지 않을 것이라고 생각한다. – putvande

+0

이름 필드를 악용하려는 악의적 인 사용자로부터 웹 사이트를 보호하는 것보다. 만약 당신이 적어도 그 필드를 벗어나면 Joe O'Donnell의 이름은 이미 엉망이 될 것입니다.하지만 쿼리가 실행되는 동안'''를 사용할 수있는 가능성을 다루어야 만합니다. – Mevia

답변

1

이름 유효성 검사 및 (Falsehoods programmers believe about names 참조) 자신의 나쁜 생각, 당신의 정규식

/^\pL{4,25}\s\pL{4,25}$/u 

예, 그것은 가능하지만, 못생긴 문법적으로 단순화 될 수있다. 당신은 하나 개의 공간이 있는지 확인하기 위해 positive lookahead assertion를 사용해야합니다, 그것은 말이나 문자열의 시작 부분도 있다고 :

/^(?=\S+\s\S+$)[\pL\s]{8,50}$/u 

당신이 더 많은 공간/단어를 허용하려면

, 당신 사용할 수 있습니다

/^(?=\S+(?:\s\S+)+$)[\pL\s]{8,50}$/u 
+0

감사합니다. 잘 설명하고 전달했습니다. :) – Mevia

관련 문제