数字,短划线和方括号的正则表达式验证

时间:2015-04-28 04:18:13

标签: javascript jquery regex validation

我需要使用jquery / javascript regex验证验证以下格式。

使用代码在java正则表达式中完成:

"(\\d{1,2})?\\s?\\[\\d{3}\\]\\s?\\d{4}-?\\d{4}"

但现在需要在客户端使用javascript / jquery。

以下是样本:

1) 1 [123] 1234-5678
2) 1[123] 1235-5678
3) 1[123]1236-5678
4) 1 [123]1237-5678
5) 1 [123] 12385789
6) 1[123]12341678
7) 1 [123]12345678
8) 1[123] 1234-5678
9) [123] 1234-5678
10) [123]1234-5678
11) [123]12345678
12) [123] 12345678

它基本上是数字,方括号,短划线的组合, 这里的数字&方括号必须存在,但破折号( - )可能会也可能不存在。

只有数字&方括号可以允许,没有其他字符

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在JS中,您可以使用RegExp对象文字,这意味着您不需要转义反斜杠字符。可以通过两个正斜杠字符包围正则表达式来创建RegExp对象文字:

原始正则表达式:

"(\\d{1,2})?\\s?\\[\\d{3}\\]\\s?\\d{4}-?\\d{4}"

在JavaScript中为RegExp对象分配变量:

var myRegex = /(\d{1,2})?\s?\[\d{3}\]\s?\d{4}-?\d{4}/;

要添加到正则表达式(g,i,m,y)的任何标志应直接在终止正斜杠之后。例如:

/(\d{1,2})?\s?\[\d{3}\]\s?\d{4}-?\d{4}/gm

另一种方法是以字符串形式获取原始正则表达式并将其传递给RegExp构造函数,但这仅建议用于动态正则表达式而不是静态表达式:

var myRegex = new RegExp('(\\d{1,2})?\\s?\\[\\d{3}\\]\\s?\\d{4}-?\\d{4}');

您也可以选择将第二个参数传递给此构造函数,该构造函数接受一串标记。

可以找到有关创建和使用RegExp对象的更多文档here

答案 1 :(得分:0)

JavaScript在字符串中使用实际的RegExp而不是它。您可以使用RegExp类将其转换为正则表达式:

var regex = new RegExp("(\\d{1,2})?\\s?\\[\\d{3}\\]\\s?\\d{4}-?\\d{4}");

regex现在拥有你的正则表达式。使用此方法,您可以将regex替换为第四个,而无需修改它们。 Javascript还支持RegEx,前面有/,结尾。

var regex = /(?:This\sIs\sMy\sRegex)/flags;