Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于自定义名称验证的正则表达式-清空空间',-仅一次_Javascript_Regex - Fatal编程技术网

Javascript 用于自定义名称验证的正则表达式-清空空间',-仅一次

Javascript 用于自定义名称验证的正则表达式-清空空间',-仅一次,javascript,regex,Javascript,Regex,我正在寻找一个正则表达式,有一些自定义规则。我对正则表达式不太在行,所以下面是我正在尝试的一些规则: 没有空白 单词之间只允许有一个空格 除了撇号和连字符外,没有特殊字符,而且只有一个在单词中,像O'Brian 例子 约翰·格雷·布赖恩 约翰·布莱恩 约翰·奥布赖恩 约翰·奥布赖恩 试试这个: var r = /^\w+(?:['-]\w*)?(?: \w+(?:['-]\w*)?)+$/; r.test("John Gray") // Result: true r.test(" ")

我正在寻找一个正则表达式,有一些自定义规则。我对正则表达式不太在行,所以下面是我正在尝试的一些规则:

没有空白 单词之间只允许有一个空格 除了撇号和连字符外,没有特殊字符,而且只有一个在单词中,像O'Brian 例子

约翰·格雷·布赖恩 约翰·布莱恩 约翰·奥布赖恩 约翰·奥布赖恩 试试这个:

var r = /^\w+(?:['-]\w*)?(?: \w+(?:['-]\w*)?)+$/;
r.test("John Gray")
// Result: true

r.test("    ")
// Result: false

r.test("John O'Brian")
// Result: true

r.test("John O-Brian")
// Result: true

r.test("John  O-Brian")
// Result: false
我建议您通过研究JavaScript正则表达式来了解其工作原理;这样你就能学会它

将此正则表达式与“i”标志一起使用,请参见:

^[a-z]+[-'][a-z]+?[a-z]+[-'][a-z]+*$

细分:

^[a-z]+以任意数量的字母开头

[-'][a-z]+?可能匹配破折号或撇号,后跟更多字母


[a-z]+[-'][a-z]+?*$匹配任意数量的其他名称,每个名称前面都有一个空格,直到字符串的结尾

规则1没有空格。规则2说一个空格。是哪一个?而且,你的例子都是串连在一起的;你能把它们分开列出来吗?这样我们就可以区分它们了?