我正在寻找一个有一些自定义规则的正则表达式。我对正则表达式不好,所以这里有一些我正在尝试的规则:
'
)和连字符(-
)之外没有特殊字符,只有一个字符在O' Brian 示例
John Gray Brian
John Brian
John O'Brian
John O-Brian
答案 0 :(得分:1)
将此正则表达式(请参阅regex101 example)与' i'标志:
^[a-z]+([-'][a-z]+)?( [a-z]+([-'][a-z]+)?)*$
故障:
^[a-z]+
以任意数量的字母开头
([-'][a-z]+)?
可能匹配短划线或撇号后跟更多字母
( [a-z]+([-'][a-z]+)?)*$
匹配任意数量的其他名称,每个名称前面都有一个空格,直到字符串的末尾
答案 1 :(得分:0)
试试这个:
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正则表达式来了解其工作原理;那样你就可以学习它。 ;)Try starting here.