我正在寻找满足以下条件的正则表达式
- 最少 1 个和最多 50 个字符
- 字符串的开头和结尾没有空格
- 只允许一个空格,两个单词之间的点。
我正在使用以下表达式,这会导致灾难性的回溯问题。表达 -
/^[a-zA-Z]+(?:(?:|['_\. ])([a-zA-Z]*(\.\s)?[a-zA-Z])+)*$/
我怎样才能防止这个问题?
我正在寻找满足以下条件的正则表达式
我正在使用以下表达式,这会导致灾难性的回溯问题。表达 -
/^[a-zA-Z]+(?:(?:|['_\. ])([a-zA-Z]*(\.\s)?[a-zA-Z])+)*$/
我怎样才能防止这个问题?
您可以使用
/^(?=.{1,50}$)[a-z]+(?:['_.\s][a-z]+)*$/i
请参阅正则表达式演示。
细节
^
- 字符串的开始(?=.{1,50}$)
- 字符串中必须有 1 到 50 个字符[a-z]+
- 1 个或多个 ASCII 字母(?:['_.\s][a-z]+)*
- 0个或多个序列
['_.\s]
- a '
, _
,.
或空格[a-z]+
- 1 个或多个 ASCII 字母$
- 字符串结束/i
- 不区分大小写的修饰符。