Javascript 重新制作此regexp

Javascript 重新制作此regexp,javascript,jquery,html,validation,forms,Javascript,Jquery,Html,Validation,Forms,我有这个正则表达式来帮助我验证表单输入 var nrExp = /^\d{6}\-\d{4}$/; 这只允许10个数字,其中最后4个数字用“减号”分隔 我需要让它也允许它不带负号,用空格代替负号: 0123456789 012345 6789 如何重新生成此regexp以允许所需内容 谢谢var nrExp=/^\d{6}\[\-]?\d{4}$/ 这应该可以做到-空白或破折号,由?var nrExp=/^\d{6}\[\-]?\d{4}$/ var re = /^\d{6}[\

我有这个正则表达式来帮助我验证表单输入

var nrExp = /^\d{6}\-\d{4}$/;
这只允许10个数字,其中最后4个数字用“减号”分隔

我需要让它也允许它不带负号,用空格代替负号:

   0123456789
   012345 6789
如何重新生成此regexp以允许所需内容


谢谢

var nrExp=/^\d{6}\[\-]?\d{4}$/


这应该可以做到-空白或破折号,由?

var nrExp=/^\d{6}\[\-]?\d{4}$/

var re = /^\d{6}[\- ]?\d{4}$/
console.log(re.test('012345-6789'));
console.log(re.test('012345 6789'));
console.log(re.test('0123456789'));

这样就可以了——空白或破折号,由?

当然可以。您只需要将减号与其他几个字符一起设置为可选

var re = /^\d{6}[\- ]?\d{4}$/
console.log(re.test('012345-6789'));
console.log(re.test('012345 6789'));
console.log(re.test('0123456789'));
试试这个:

var nrExp = /^\d{6}(\-| )?\d{4}$/;

注意
(\-|)
后面的
。这允许匹配部分是可选的。

当然。您只需要将减号与其他几个字符一起设置为可选

/^\d{6}[- ]?\d{4}$/
试试这个:

var nrExp = /^\d{6}(\-| )?\d{4}$/;
注意
(\-|)
后面的
。这允许匹配部分是可选的

/^\d{6}[- ]?\d{4}$/
您不需要在括号内转义负号,因为它不提供范围


你不需要避开括号内的负号,因为它没有给出一个范围。

应该可以,但它有点难看。(1)
-
根本不需要在
[]
块外转义。(2) 如果您要匹配两个可能的字符中的一个,而不是字符串,
[-]
(\-)
更合适(并且不像您的示例那样,不会创建捕获组)。@cHao感谢您的建议。考虑一下,他可能想在将来增加其他角色。我知道它也适用于character类,我只是太习惯于使用多字符分隔符,我倾向于使用
()
。应该可以,但有点难看。(1)
-
根本不需要在
[]
块外转义。(2) 如果您要匹配两个可能的字符中的一个,而不是字符串,
[-]
(\-)
更合适(并且不像您的示例那样,不会创建捕获组)。@cHao感谢您的建议。考虑一下,他可能想在将来增加其他角色。我知道它也适用于character类,我只是太习惯于使用多字符分隔符,我倾向于使用
()