gpt4 book ai didi

regex - 如何编写正则表达式以仅匹配数字,字母和破折号?

转载 作者:行者123 更新时间:2023-12-02 05:39:15 25 4
gpt4 key购买 nike

我需要一个仅接受的表达式:

  • 数字
  • 普通字母(无特殊字符)
  • -

  • 也不允许有空格。

    例:
    正则表达式应匹配: this-is-quite-alright
    它不应该匹配 this -is/not,soålright

    最佳答案

    您可以使用:

    ^[A-Za-z0-9-]*$

    这匹配可能完全为大写/小写字母(ASCII A-Z),数字(ASCII 0-9)和破折号的字符串,可能为空。

    符合( as seen on rubular.com):
    this-is-quite-alright
    and-a-1-and-a-2-and-3-4-5

    yep---------this-is-also-okay

    并拒绝:
    this -is/not,soålright
    hello world

    说明:
  • ^$分别是字符串 anchor 的开头和结尾
  • 如果要在字符串中查找匹配项,则不需要 anchor
  • [...]是字符类

    字符类中的
  • a-zA-Z0-9定义范围
  • -作为类中的最后一个字符是文字​​破折号
  • *是零个或多个重复

  • regular-expressions.info
  • AnchorsCharacter ClassRepetition


  • 变异

    规范尚不清楚,但是如果 -仅用于分隔“单词”,即没有双破折号,没有尾随的破折号,没有前面的破折号,则该模式会更复杂(仅略微!)。
      _"alpha"_    separating dash
    / \ /
    ^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
    \__________/| \__________/|\
    "word" | "word" | zero-or-more
    \_____________/
    group together

    这将匹配至少一个“单词”的字符串,其中单词由一个或多个“alpha”组成,其中“alpha”由字母和数字组成。可能会出现更多的“单词”,并且它们始终用短划线隔开。

    符合( as seen on rubular.com):
    this-is-quite-alright
    and-a-1-and-a-2-and-3-4-5

    并拒绝:
    --no-way
    no-way--
    no--way

    关于regex - 如何编写正则表达式以仅匹配数字,字母和破折号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224419/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com