2013-08-05 17 views
1

두 번째 단어 또는 문자 앞에 한 단어 또는 문자 뒤에 영문자와 공백을 입력 할 수있는 정규식이 있는지 알아 봅니다.문자 또는 단어 뒤에 공백을 허용하는 정규식

이것은 내가 지금까지 한 것입니다.

^[\w ]+$ 

그러나 단어 만 검사합니다.

이름을 확인하려면 위의 내용이 필요합니다.

나는 사용자가 }{[]""<>?/\ 같은 문자를 입력 피하기 위해 등등 ...

내 jsfiddle은이 일이 나에게 허용하지 않습니다 원하는

JSFiddle

+1

이상한 것 같다 이름을 확인하는 방법, 특수 문자를 필터링하지 않는 이유는 여러 가지 이상한 이름이 있기 때문입니다. – adeneo

+0

사용자가 {{] ""<>?/\ –

+0

과 같은 문자를 입력하지 않도록하고 싶습니다. 왜 내 이름에 따옴표를 사용할 수 없습니까? 나는 따옴표가있는 이름을 원한다. – Spudley

답변

2

귀하의 정규식, ^[\w ]+$는 다음 중 하나 이상을 할 수 있습니다 단어 문자 \w 또는 공백의 조합은 행에 공백이 있거나 공백 이외의 공백이 포함됩니다. \w은 "단어"문자가 숫자 및 밑줄을 포함하는 것으로 정의 된 "단어"문자와 일치하므로 둘 중 하나를 원하지 않습니다. 당신은 아포스트로피를 언급하지 않았다

^     beginning of string 
[A-Za-z']+   one or more letters or apostrophe 
([A-Za-z']+)* zero or more instances of (a single space followed by 
        by one or more letters or apostrophe) 
$     end of string 

,하지만 난 오코너 같은 이름을 허용하기를 추가 :

^[A-Za-z']+([A-Za-z']+)*$ 

이 일치합니다 :

는 대신 다음보십시오.

영어 이외의 이름은 대부분 제외됩니다. 여기에 사람들의 이름을 확인한다고 가정하면 사용자가 입력하려는 내용을 입력하게하는 것이 나을 것입니다.

+0

하이픈은 일반 이름 문자이기도합니다. 또한 [이 답변] (http://stackoverflow.com/a/15806080/838807)은 영어 이외의 이름에 대한 다른 유니 코드 문자를 처리하기위한 패턴을 제안합니다. – musefan

+0

@musefan - 하이픈에 대한 좋은 지적입니다. 내가 보여준 패턴에 쉽게 추가 할 수 있습니다. 물론 링크가 좋습니다. 그러나 저는 제 대답의 마지막 문장을 고수합니다. 유효성 검사 이름을 귀찮게하는 것이 특히 유용하지는 않습니다. 사용자가 수학 공식 등에 연결될 필요가없는 이름과 같은 필드에 대해 자신의 데이터를 증명할 수있게하십시오. – nnnnnn

+0

유효성 검사가 맨 위에 있다는 것에 동의합니다. 난 그냥 저장 프로세스 (또는 무엇이든 데이터로 완료되고) 단일 공간으로 "여러 개의 공백"을 대체하고 끝을 트림을 고려할 것입니다 – musefan

-1

문자 클래스에 공백을 추가하십시오.

^[a-zA-Z0-9_ ]*$

+0

"단일 공백"과 일치하지 않는 경우 공백이 아닌 여러 개의 연속 공백을 사용할 수 있으며 이름에 숫자가 들어 가지 않습니다 (OP는 사람의 이름을 말하고있는 것으로 가정). – nnnnnn

+0

이 기준과 일치하지 않습니다. 나는 이름에서 nos를 원하지 않는다. –

0

귀하의 주요 문제는 제대로 UTF-8을 지원하지 않는 자바 스크립트의 정규식 파서에서 제한 될 가능성이 높습니다. 당신은 원하지 않는 문자를 차단하는 제외 정규 표현식 패턴을 만드는 것이 낫습니다.

이 같은 패턴 일 수 있습니다

/^[^}{\[\]\"]+$/g 

}{[]" 문자를 포함하지 않는 임의의 문자열과 일치합니다. (필요에 따라 다른 사람을 추가하되, avoid matching too much). 도움이

var x = '田中太郎';     //sample name. 
var filter_name = /^[^}{\[\]\"]+$/g; //add more characters here to exclude as required. 
console.log(filter_name.test(x));  //returns true (successful match). 

var x = '田中{}太郎';     //sample name with {} added. 
var filter_name = /^[^}{\[\]\"]+$/g; //add more characters here to exclude as required. 
console.log(filter_name.test(x));  //returns false (failed due to {} braces). 

희망 :

다음은 브라우저 콘솔에서 실행할 수있는 예입니다.

+0

다른 사람이 잘못된 문자를 입력 할 때마다 입력이 atall로 계산되지 않도록 jsfiddle에서 어떻게 구현해야합니까? –

+0

코드의'filter_name' 라인 만 변경하면됩니다. 심지어 정규 표현식과 같은 변수 이름을 사용했습니다. – Spudley

+0

그게 작동하지 않습니다. 내 jsfiddle을 업데이트했습니다. –

5

이 간단한 하나의 필요에 맞게해야합니다

^\w+(\w+)*$ 

Regular expression visualization

Edit live on Debuggex

+0

그냥 문자를 원하지 않습니다. –

+0

/[^ a-zA-Z]/g 이걸 가지고 계신가요? 1 칸의 공간 만 허용 할 수있는 방법은 무엇입니까? –

+0

@FakhruddinUjjainwala 왜 그런 말을하지 않습니까? '\ w'는'[a-zA-Z0-9_]'와 정확히 같습니다. 즉,이 문자들 중 하나입니다. 여분의 일치 항목 (예 : 점과 대시)을 추가해야하는 경우'[\ w .-]'를 사용할 수 있습니다. 대쉬의 특별한 경우 : 클래스의 처음이나 끝에 있어야합니다 (예 :'[\ w -.] '가 아닌'[\ w .-]'). – sp00m

0

사용이 정규식 :

/^(\w+\s?)*$/ 
0
/^([A-Za-z']+([A-Za-z']+)*){3,30}$/ 
관련 문제