2

我有以下正则表达式...这个不允许空字符串。我该如何操作?

var phoneReg = new RegExp(/^\+?[0-9]+(\([0-9]+\))?[0-9-]*[0-9]$/i);
4

3 回答 3

5

只需使用“零或一”运算符?,例如:

/^(?:regex)?$/
           ^

(?:regex)只是使相关的地面无法捕获(即无需更改您的$X,\X?X索引,如果有的话)。

于 2013-07-02T15:34:38.420 回答
3

我相信以下方法会起作用:

/^$|^\+?[0-9]+(\([0-9]+\))?[0-9-]*[0-9]$/i

我已^$|在您的正则表达式的开头插入。管道 ( |) 称为“交替”指示符,表示它之前或之后的表达式必须匹配。^$将仅匹配输入的开头和结尾之间没有字符的字符串。结果:空字符串或原始表达式。

于 2013-07-02T15:32:39.797 回答
3

你可以放一个^$| 前面,其中 ^ = 开始,$ = 结束,| = 或右边的其他东西。

var phoneReg = new RegExp(/^$|^\+?[0-9]+(\([0-9]+\))?[0-9-]*[0-9]$/i);
于 2013-07-02T15:33:46.950 回答