代码之家  ›  专栏  ›  技术社区  ›  theJuls

匹配特定范围内的单个正则表达式字符

  •  0
  • theJuls  · 技术社区  · 7 年前

    [a-z]

    目前正在执行以下操作:

    const regex = RegExp('[a-z]');
    console.warn('TEST', regex.test('a'))
    

    例如:

    • a 应该通过
    • b 应该通过
    • ab 应该失败
    • aa
    • abcdefg 应该失败

    你明白了。

    我试过一些变体,比如L

    这没什么用。最终,它仍然接受该范围内的任何字符组合。

    1 回复  |  直到 7 年前
        1
  •  6
  •   user47589 user47589    7 年前

    用别针把绳子固定住 ^ $ ,分别与“字符串开始”和“字符串结束”匹配。

    你的正则表达式是 ^[a-z]$ a 和 z ,并且该单个字符必须是要匹配的整个字符串。

    原因 [a-z]{1} [a-z] )不起作用是因为可以沿字符串匹配单个字符。字符串的开始/结束没有“固定”。

    let str = ['a','b','ab','aa','abcdefg'];
    const regex = /^[a-z]$/;
    str.forEach(w => console.warn(w, regex.test(w)));

    顺便说一句 [{1}a-z] 不会做你认为它会做的事。您打算匹配一个字母字符,但这会在匹配列表中再添加三个字符,即:

    • a-z
    • {
    • }
    • 1 .

    [a-z]{1} ,如前所述,相当于 [a-z]