javascript 正则表达式单次出现

zpqajqem  于 2023-06-28  发布在  Java
关注(0)|答案(3)|浏览(141)

我想要一个正则表达式来检查字母A-F和a-f是否只出现一次。我该怎么做?我想检查用户输入中是否只有一个字母,这个字母要么来自A-F,要么来自a-f。

enxuqcxy

enxuqcxy1#

“我想检查用户输入中是否只有一个字母,并且该字母来自A-F或a-f
您可以使用/^[a-f]$/i匹配A-Fa-f范围内的单个字母。

let rx = /^[a-f]$/i;

console.log(rx.test('a'));
console.log(rx.test('F'));
console.log(rx.test('G'));
console.log(rx.test('aa'));

如果你的意思是输入可以是任意长度,但你必须确保只有一个字母,并且该字母在A-Fa-f范围内,那么你可以这样做:

let rx = /^[^a-f]*[a-f][^a-f]*$/i;

console.log(rx.test('AF'));
console.log(rx.test('A'));
console.log(rx.test('2F3'));
console.log(rx.test('2G3'));
bvk5enib

bvk5enib2#

而不是使用正则表达式,我只是检查输入字符串的长度为1,并且它在您想要的范围内:

var input = 'F';
var test = input.toLowerCase();
var aLetterCode = 97;
var fLetterCode = 102;
if (test.length() == 1 &&
    test.charCodeAt(0) >= aLetterCode &&
    test.charCodeAt(0) <= fLetterCode)
{
    console.log("input is a match.");
}
lf5gs5x2

lf5gs5x23#

我不知道你说的是什么意思...你想让任何一个字母只被使用一次,或者只想让其中一个字母被使用一次,这是在一个字符串中,还是只有那些字母?
对于我来说,在类似的情况下,正则表达式是匹配器,而不是计数器。你可以在[A-Fa-f]上match_all,然后在match结果上,计算使用了多少个one/each。
如果只需要字符串中的这些字母,则match_all ^[A-Fa-f]$并计算结果

相关问题