【问题标题】:Js Regular expression for first name名字的Js正则表达式
【发布时间】:2017-10-10 10:11:36
【问题描述】:

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

  • 最少 1 个字符和最多 50 个字符
  • 字符串的开头和结尾没有空格
  • 只允许一个空格,两个单词之间的点。

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

/^[a-zA-Z]+(?:(?:|['_\. ])([a-zA-Z]*(\.\s)?[a-zA-Z])+)*$/

我怎样才能避免这个问题?

【问题讨论】:

标签: javascript regex formvalidation.io


【解决方案1】:

你可以使用

/^(?=.{1,50}$)[a-z]+(?:['_.\s][a-z]+)*$/i

请参阅regex demo

详情

  • ^ - 字符串开头
  • (?=.{1,50}$) - 字符串中必须有 1 到 50 个字符
  • [a-z]+ - 1 个或多个 ASCII 字母
  • (?:['_.\s][a-z]+)* - 0 个或多个序列
    • ['_.\s] - '_. 或空格
    • [a-z]+ - 1 个或多个 ASCII 字母
  • $ - 字符串结束
  • /i - 不区分大小写的修饰符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多