【问题标题】:REGEX (javascript) - Allow alphanumeric characters with special characters not in the first position正则表达式 (javascript) - 允许带有特殊字符的字母数字字符不在第一位
【发布时间】:2012-08-15 20:38:52
【问题描述】:

我想设计一个允许字母数字字符以及其他字符(只要它们不在第一个位置)的正则表达式。例子:

VALID: Test
VALID: Hello123
VALID: 456 Hi
VALID: 456-789
VALID: Hi-777
VALID: 333-Hi
VALID: Hello-There
VALID: What's Up
VALID: Hello#Goodbye

INVALID: -Hello
INVALID: &Goodbye

这是我的起点,只允许字母数字:

/[a-zA-Z]+/

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    使用^[A-Za-z0-9] 要求在第一个位置有一个字母数字字符(紧跟^,字符串的开头),然后是您需要的任何其他字符。

    # Specific set permitted -- add all the characters you need...
    /^[A-Za-z0-9][A-Za-z-9, +-_&#'"]+$/
    
    # Or anything permitted after the first position
    # Use .* instead of .+ if a single character string is permissible.
    /^[A-Za-z0-9].+$/
    

    【讨论】:

    • 您不需要在第一个范围之后使用+,在第二个范围之后使用星号吗? /^[A-Za-z0-9]+[A-Za-z-9,+-_&#'"]*$/
    • @TI 不,你不应该有它 - 在第一个字符类之后省略 + 意味着你只需要 one (不多也不少)字母数字字符在字符串的开头。但是第二个字符类允许额外的 alpha-num 字符以及其他字符。第二个可能是+*,这取决于是否需要更多字符。使用* 将允许字符串只有一个字符(第一个)
    • 谢谢我现在读得更好了,但我认为第二个范围内需要有空格或 smt ^[A-Za-z0-9][A-Za-z0-9,+-_&#'" ]+$
    • @TI 我添加了空格 - OP 需要将所有允许的字符放在那里,或者使用带有.+的第二个选项
    • 你为什么(隐含地)断言至少 2 个字符? + 应该是 *,IMO
    【解决方案2】:

    试试这个正则表达式:

    /^[a-zA-Z0-9].*$/
    

    【讨论】:

      【解决方案3】:

      /^\w/ 如果您只需要测试,/^\w.*$/ 如果您还需要匹配整个字符串。 如果您也允许空字符串,您可以使用/^(\w|$)/,读取为字符串以单词字符开头或结尾(为空),或/^(\w.*)?$/,读取为字符串是单词字符后跟任何内容,一次或一次都没有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多