我最近需要创建一个正则表达式来检查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}$)
Run Code Online (Sandbox Code Playgroud)
这就是我需要的,所以允许的输入是(如果0是任何数字)
'00000'
' 00000'
'0 0000'
'00 000'
'000 00'
'0000 0'
'00000 '
Run Code Online (Sandbox Code Playgroud)
我怀疑这是与正则表达式实现这种匹配的唯一方法,但我还没有找到一种更清洁的方法.所以我的问题是,如何更好地编写?
谢谢.
编辑:
所以,这是可能的!Tom Lord的回答用正则表达式做了我需要的,所以我把它标记为我的问题的正确答案.
然而,在我发布这个问题后不久,我意识到我的想法不对,因为项目中的每个其他输入都很容易用正则表达式"验证",我立即假设我也可以用它来验证这个.
事实证明我可以这样做:
const validate = function(value) {
const v = value.replace(/\s/g, '')
const regex = new RegExp('^\\d{5}$');
return regex.test(v);
}
Run Code Online (Sandbox Code Playgroud)
谢谢大家的精彩答案和想法!:)
Edit2:我忘了提一个可能非常重要的细节,即输入是有限的,所以用户最多只能输入6个字符.我很抱歉.