或者使用javascript中的正则表达式

时间:2017-04-06 00:03:51

标签: javascript regex

假设我有这段代码:

var pattern = /^\d{1}-\d{3}-\d{3}-\d{4}$/;

//var res = pattern.replace("-", ".");

如何在输入数字时不强制要求用户不要总是使用短划线?我想让输入变成破折号或点......

1 个答案:

答案 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将只匹配.