我正在寻找满足以下条件的正则表达式
- 最少 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- 不区分大小写的修饰符。