最近我需要创建一个JavaScript正则表达式来检查输入。输入可以是5或6个字符长,必须恰好包含5个数字和一个可选空格,该空格可以出现在任何位置。我对正则表达式不太熟悉,尽管我试图寻找更好的方法,但最终只能得到以下内容:
(^\d{5}$)|(^ \d{5}$)|(^\d{5} $)|(^\d{1} \d{4}$)|(^\d{2} \d{3}$)|(^\d{3} \d{2}$)|(^\d{4} \d{1}$)
这正好符合我的需求,所以允许的输入为(如果0是任意数字)
'00000'
' 00000'
'0 0000'
'00 000'
'000 00'
'0000 0'
'00000 '
我怀疑这不是实现与正则表达式匹配的唯一方式,但我没有找到更简洁的方法。因此我的问题是,有什么更好的写法吗?
谢谢。
编辑:
所以,这是可能的!Tom Lord的回答使用正则表达式实现了我需要的功能,因此我将其标记为了我的问题的正确答案。
然而,就在我发布这个问题后不久,我意识到我的想法是错误的,因为项目中的其他所有输入都可以轻松地用正则表达式进行“验证”,所以我立即假设我也可以用它来验证这个输入。
结果发现我只需要这样做:
const validate = function(value) {
const v = value.replace(/\s/g, '')
const regex = new RegExp('^\\d{5}$');
return regex.test(v);
}
感谢大家提供的酷炫答案和想法! :)
编辑2:我忘了提及一个可能非常重要的细节,那就是输入受限,所以用户最多只能输入6个字符。我的歉意。
[\d ]
(或者您可能还需要验证字符串长度)。 - user3089519