【问题标题】:Regular expression to validate a string starts with a char and contains allowed chars验证字符串的正则表达式以字符开头并包含允许的字符
【发布时间】:2021-01-14 12:38:52
【问题描述】:

我在用 javascript 编写的正则表达式方面需要帮助。 我试过在线使用正则表达式生成器,我能想到的最好的就是这个:

^[a-z.-]{0,50}$

表达式必须验证以下内容

  • 字符串第一个字符必须以 a-z 开头(无 alpha)
  • 字符串可以包含 a-z(无 alpha)、0-9 范围内的任何字符以及字符“-”和点“.”
  • 字符串的最大长度为 50 个字符

成功字符串示例

  • 用户名1
  • 用户名.姓氏
  • 用户名-另一个字符串1
  • this.is.also.ok

没有好的字符串

  • 1错误用户名
  • .verbad
  • -不好
  • 也很糟糕有空格

// 谢谢

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    几乎(假设“no alpha”表示没有大写字母)

    https://regex101.com/r/O9hvLP/3

    ^[a-z]{1}[a-z0-9\.-]{0,49}$
    

    {1} 是可选的,出于描述性原因,我将其放在那里

    【讨论】:

    • 1-49 不应该是 0-49 吗?否则,要点 2 上的 OP“可以包含”将是“必须包含”
    • @Jamiec 谢谢 - 我专注于不超过 50
    【解决方案2】:

    我认为这应该涵盖您想要的内容

    ^[a-z][a-z0-9.-]{0,49}$
    

    即以 a-z 开头,但随后有 0-49 个 a-z0-9.-

    现场示例:https://regexr.com/5k8eu

    编辑:不确定你是否打算允许大写和小写,但如果你这样做了两个字符类也可以添加A-Z

    【讨论】:

    • 啊,你的顺序和我的不一样。 SO -0-9 不起作用,但 0-9.- 起作用
    【解决方案3】:

    如果.-不能在末尾,并且不能有连续的,另一种选择可能是:

    ^[a-z](?=[a-z0-9.-]{0,49}$)[a-z0-9]*(?:[.-][a-z0-9]+)*$
    

    解释

    • ^ 字符串开始
    • [a-z] 匹配单个字符 a-z
    • (?=[a-z0-9.-]{0,49}$) 将 0-49 个字符插入到字符串的末尾
    • [a-z0-9]* 匹配可选字符 a-z0-9
    • (?:[.-][a-z0-9]+)* 可以选择匹配 .- 和 1+ 次字符 a-z0-9
    • $字符串结束

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多