1

我正在寻找一个正则表达式,它允许用户在第二个单词或字符之前的一个单词或字符之后输入字母和单个空格。

这就是我迄今为止所做的。

^[\w ]+$

但只检查单词。

我需要以上内容来验证名称。

我希望用户避免输入诸如此类}{[]""<>?/\的字符...

我的 jsfiddle 它不允许我做事

JSFiddle

4

6 回答 6

5

这个简单的应该适合您的需求:

^\w+( \w+)*$

正则表达式可视化

在 Debuggex 上实时编辑

于 2013-08-05T11:51:33.993 回答
2

您的正则表达式 ,^[\w ]+$允许单词字符\w或空格的任意组合中的一个或多个,在一行中包含多个空格或仅包含空格。你也不想要\w,因为它匹配“word”字符,由于某种原因,“word”被定义为包括数字和下划线。

请尝试以下操作:

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

这将匹配:

^                  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

你没有提到撇号,但我添加了它以允许像 O'Conner 这样的名字。

请注意,这不包括相当多的非英文名称。假设您在这里验证人们的姓名,我认为您最好让用户输入他们想要输入的内容。

于 2013-08-05T10:57:09.373 回答
0

您的主要问题可能是 Javascript 的正则表达式解析器的限制,它不能正确支持 UTF-8。您最好创建一个排除正则表达式模式来阻止您不想要的字符,而不是像您拥有的那样具有包容性。

像这样的模式可能会起作用:

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

这将匹配任何不包含}{[]"字符的字符串。(根据需要添加其他,但避免匹配太多)。

这是一个可以在浏览器控制台中运行的示例:

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).

希望有帮助。

于 2013-08-05T11:42:48.973 回答
0

使用这个正则表达式:

/^(\w+\s?)*$/
于 2013-08-05T12:10:43.900 回答
0
/^([A-Za-z']+( [A-Za-z']+)*){3,30}$/
于 2016-01-13T13:59:05.563 回答
-1

只需在您的角色类中添加一个空格!

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

于 2013-08-05T10:58:51.950 回答