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

the*_*uls 1 javascript regex

看起来很简单,但我找不到怎么做.我想匹配某个范围内的单个字符,例如a到z.

[AZ]

目前正在做以下事项:

const regex = RegExp('[a-z]');
console.warn('TEST', regex.test('a'))
Run Code Online (Sandbox Code Playgroud)

很简单.但是我希望它是一个单一的角色.如果有多个,无论它们是否也属于该范围,都需要失败.例如:

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

你明白了.

我尝试了一些变化,如L

[{1} AZ]

哪个什么都没做.最终它仍然接受该范围内的任何角色组合.

Amy*_*Amy 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)));
Run Code Online (Sandbox Code Playgroud)

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

  • AZ
  • {
  • }
  • 1.

我认为你的意思是[a-z]{1},如前所述相当于[a-z].