我想要一个正则表达式来检查字母A-F和a-f是否只出现一次。我该怎么做?我想检查用户输入中是否只有一个字母,这个字母要么来自A-F,要么来自a-f。
enxuqcxy1#
“我想检查用户输入中是否只有一个字母,并且该字母来自A-F或a-f”您可以使用/^[a-f]$/i匹配A-F和a-f范围内的单个字母。
/^[a-f]$/i
A-F
a-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-F和a-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'));
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."); }
lf5gs5x23#
我不知道你说的是什么意思...你想让任何一个字母只被使用一次,或者只想让其中一个字母被使用一次,这是在一个字符串中,还是只有那些字母?对于我来说,在类似的情况下,正则表达式是匹配器,而不是计数器。你可以在[A-Fa-f]上match_all,然后在match结果上,计算使用了多少个one/each。如果只需要字符串中的这些字母,则match_all ^[A-Fa-f]$并计算结果
[A-Fa-f]
^[A-Fa-f]$
3条答案
按热度按时间enxuqcxy1#
“我想检查用户输入中是否只有一个字母,并且该字母来自A-F或a-f”
您可以使用
/^[a-f]$/i
匹配A-F
和a-f
范围内的单个字母。如果你的意思是输入可以是任意长度,但你必须确保只有一个字母,并且该字母在
A-F
和a-f
范围内,那么你可以这样做:bvk5enib2#
而不是使用正则表达式,我只是检查输入字符串的长度为1,并且它在您想要的范围内:
lf5gs5x23#
我不知道你说的是什么意思...你想让任何一个字母只被使用一次,或者只想让其中一个字母被使用一次,这是在一个字符串中,还是只有那些字母?
对于我来说,在类似的情况下,正则表达式是匹配器,而不是计数器。你可以在
[A-Fa-f]
上match_all,然后在match结果上,计算使用了多少个one/each。如果只需要字符串中的这些字母,则match_all
^[A-Fa-f]$
并计算结果