名字的 Js 正则表达式



我正在寻找满足以下条件的正则表达式

  • 最小 1 和最大 50 个字符
  • 字符串开头和结尾没有空格
  • 只允许一个空格,在 2 个单词之间加点。

我正在使用下面的表达式,这会导致灾难性的回溯问题。表达-

/^[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-z]+ - 1 个或多个 ASCII 字母
  • $ - 字符串结尾
  • /i - 不区分大小写的修饰符。

相关内容

  • 没有找到相关文章

最新更新