假设我有这段代码:
var pattern = /^\d{1}-\d{3}-\d{3}-\d{4}$/;
//var res = pattern.replace("-", ".");
如何在输入数字时不强制要求用户不要总是使用短划线?我想让输入变成破折号或点......
答案 0 :(得分:0)
您可以在它们之后添加?
量词,以使破折号可选:
var pattern = /^\d[-.]?\d{3}[-.]?\d{3}[-.]?\d{4}$/;
此处,[-.]?
匹配-
或.
字符的1或0次出现。
请参阅regex demo。
如果您想要一种一致的方式输入数据,请使用分组和反向引用:
/^\d([-.]?)\d{3}\1\d{3}\1\d{4}$/;
查看相同的demo fiddle with this pattern。
此处,([-.]?)
形成ID为1的捕获组,\1
是对存储在Group 1内存缓冲区中的值的反向引用。因此,如果第一个组与.
匹配,则所有\1
将只匹配.
。