我正在寻找满足以下条件的正则表达式
我使用下面的表达式导致灾难性的回溯问题。 表达 -
/^[a-zA-Z]+(?:(?:|['_\. ])([a-zA-Z]*(\.\s)?[a-zA-Z])+)*$/
如何防止此问题?
答案 0 :(得分:3)
您可以使用
/^(?=.{1,50}$)[a-z]+(?:['_.\s][a-z]+)*$/i
请参阅regex demo。
<强>详情
^
- 字符串开头(?=.{1,50}$)
- 字符串中必须有1到50个字符[a-z]+
- 一个或多个ASCII字母(?:['_.\s][a-z]+)*
- 0或更多序列
['_.\s]
- '
,_
,.
或空白[a-z]+
- 一个或多个ASCII字母$
- 字符串结尾/i
- 不区分大小写的修饰符。