创建一个有效的正则表达式以验证名称

时间:2018-06-28 04:23:08

标签: javascript regex

我想在我的react native应用程序中验证姓名,我需要 regex用于验证名称

有效名称:John博士              圣彼得大教堂 无效的姓名:Dr .. John                圣彼得大教堂。

两个特殊字符不应并排,而只能是'和。被允许 。同样,名称不应该以这些特殊字符开头,而可以以。结尾。不与'

下面是我正在使用的regex,但它不包含'和。并排

/[!0-9@#$%^&*()_+\-=\[\]{};':"\\|,<>\/?]/

3 个答案:

答案 0 :(得分:-1)

[a-zA-Z]+\.?\s?'?(?!$)应该可以解决问题。在JavaScript中效果很好。

我没有花太多时间使它尽可能高效,所以可能会有更好的方法来实现这一目标。

祝你好运。

[编辑]

这在大多数情况下应该有效:[a-zA-Z ]+(\.|')?[a-zA-Z ]+(\.|')?

这是我要测试的内容:
Dr. John St. Pet .er's个匹配项:Dr. John St.Pet .er'
Dr.'. John St.. Peter''s'个匹配项:Dr.John St.Peter'
Anthony个匹配项:Anthony
Timbo J. Fadds个匹配项:Timbo J. Fadds
Sally Esquire个匹配项:Sally Esquire

只有在对带有很多“非法”字符的字符串进行测试时,它才会真正混乱。

无论如何,在您确切说明输入内容和输出内容之前,我不会花更多的时间。

[编辑]

[^(\.|')|(\.|')]+(\.|')?可能有用...

答案 1 :(得分:-1)

我建议您尝试一下,希望对您有用:

var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};

答案 2 :(得分:-1)

正则表达式应如下所示:

^(?!(.*(([^a-zA-Z\.\'\s])|(\.{2,})|('{2,}|\s{2,}))))

您可以在此处派生并添加更多测试用例:

https://regexfiddler.com/e/0ptjxdnr7y5r/test-valid-name