似乎很简单,但是我找不到如何执行此操作。我想在一个特定范围内匹配一个字符,例如a到z。
[a-z]
当前正在执行以下操作:
const regex = RegExp('[a-z]');
console.warn('TEST', regex.test('a'))
足够简单。但是我希望它是单个字符。如果不止一个,则无论它们是否也属于该范围,都需要失败。 例如:
a
应该通过b
应该通过ab
应该失败aa
应该失败abcdefg
应该失败您明白了。
我尝试了一些变体,例如L
[{1} a-z]
什么都不做。最终,它仍然接受该范围内的任何字符组合。
答案 0 :(得分:6)
使用^
和$
向下固定字符串,这两个字符串分别与“字符串的开始”和“字符串的结束”匹配。
您的正则表达式为^[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]
并没有达到您的预期。您打算匹配一个字母字符,但这会在匹配列表中再添加三个字符,即:
{
}
1
。 我认为您的意思是[a-z]{1}
,如前所述,它等同于[a-z]
。