我正在寻找一个正则表达式,允许用户在第二个单词或字符之前的一个单词或字符之后输入字母和单个空格。
这是我到目前为止所做的。
^[\w ]+$
但只检查单词。
我要求以上内容验证名称。
我希望用户避免输入}{[]""<>?/\
之类的字符等等......
我的jsfiddle它不允许我的事情
答案 0 :(得分:5)
答案 1 :(得分:2)
你的正则表达式^[\w ]+$
允许单词字符\w
或空格的任意组合中的一个或多个,包括一行中的几个空格或空格中的任何空格。您也不需要\w
,因为它匹配“单词”字符,由于某种原因“单词”被定义为包括数字和下划线。
请尝试以下方法:
^[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这样的名字。
请注意,这不包括相当多的非英文名字。假设你在这里验证了人们的名字,我认为你最好让用户输入他们想要输入的内容。
答案 2 :(得分:0)
您的主要问题可能是Javascript的正则表达式解析器中的限制,它不能正确支持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).
希望有所帮助。
答案 3 :(得分:0)
使用此正则表达式:
/^(\w+\s?)*$/
答案 4 :(得分:0)
/^([A-Za-z']+( [A-Za-z']+)*){3,30}$/
答案 5 :(得分:-1)
只需在角色类中添加一个空格!
^[a-zA-Z0-9_ ]*$