自定义名称验证的正则表达式-emptyspace,', - 只有一次

时间:2015-04-10 18:18:50

标签: javascript regex

我正在寻找一个有一些自定义规则的正则表达式。我对正则表达式不好,所以这里有一些我正在尝试的规则:

  1. No Whitespaces
  2. 允许单词之间只有一个空格
  3. 除了撇号(')和连字符(-)之外没有特殊字符,只有一个字符在O' Brian
  4. 之内

    示例

    John Gray Brian
    John Brian
    John O'Brian
    John O-Brian
    

2 个答案:

答案 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.