更新正则表达式以排除点后不能有空格的点

时间:2019-04-10 00:23:23

标签: regex ruby

我正在用来验证Rails应用程序中名称的格式。我需要更新它,以使其不接受类似mike.jones

的内容

当前正则表达式

/([A-Za-z ',.-]+)/

可接受的名称

'Baxter',
'Doe de Sour Jr.',
'Smith-Brown',
"Mathias d'Arras",
"d'Arras",
'King, Jr.',
'Cotton III'

无效名称

'Baxter2',
'user@gmail',
'#michael',
'tina.fay'

2 个答案:

答案 0 :(得分:2)

当您需要考虑有效名称中间出现的句点时,答案有点复杂。根据您的描述,规则似乎是句号很好,只要它们没有紧跟字母即可。这可以通过正则表达式预见来实现:

^(?!.*\.\S)[A-Za-z ',.-]+$

演示:https://regex101.com/r/LkUl38/2

答案 1 :(得分:0)

然后,您只需要将stringList[1]移到正则表达式的末尾(并对其进行转义),以便仍然使名称{} {1}}后面的人成为

.

它应该可以正常工作。 Try it online!

如果您有兴趣,可以学习great resources online来学习正则表达式。