2011-08-10 38 views
0

朋友可以在运行时创建动态正则表达式。我创建这个正则表达式:在运行时创建动态正则表达式

[+]?\(?800\)?[+ .]?123?[+ .]?1234 

这个800.123.1234数字。此正则表达式可以发现/接受任何类似格式 页面上此号码:

(800).123.1234 
+(800)1231234 
+(800)1231234 
(800).123.1234 
800.123.1234 
800.123.1234 

其工作正常,但我需要创建rejex动态依赖于任何数量的,我在输入文本字段饲料。这里是我工作的代码示例: http://jsfiddle.net/webdesignerart/ShbMv/

意味着如果两个号码我有网页 800.123.1234和855.455.4577 我这个855.455.4577号码添加到输入文本字段 然后正则表达式能够建立动态的或解析

[+]?\(?800\)?[+ .]?123?[+ .]?1234 

在这个正则表达式中找到这个855.455.4577。

+0

您是指正则表达式? –

回答

1

您可以随时使用new RegExp(str)语法创建自己的正则表达式对象。

var str = "[+]?\\(?800\\)?[+ .]?123?[+ .]?1234"; 
var re = new RegExp(str); 
re.exec("800.123.1234"); 

请注意,您可能需要对某些声明使用双反斜杠,以允许单个反斜杠存活到正则表达式构造函数中。

但是,如果我真的明白你在做什么,可能会提前创建一个正则表达式,以匹配你需要匹配的内容。例如,您可以用这场比赛你有所有的电话号码在您的列表:

\+?\(?\d\d\d\)?\.?\d\d\d\.?\d\d\d\d 

zero or one plus sign 
zero or one left paren 
3 digits 
zero or one right paren 
zero or one period 
three digits 
zero or one period 
four digits 

这里有一个的jsfiddle,测试所有测试的数字对一个正则表达式,并提取只是号码的开出每种形式作出正常化电话号码表格:http://jsfiddle.net/jfriend00/43mqV/。它使用正则表达式:

\+?\(?(\d\d\d)\)?\.?(\d\d\d)\.?(\d\d\d\d) 

这是与上面相同,但它也记录了每个组号码,以便我们能够挑选出刚刚从匹配的结果的数字。

+0

无法清除给我: var str =“[+]?\(?800 \)?[+。]?123?[+。]?1234”; 我如何添加数字并创建它的rejex。无法清除。 – Abdullah

+0

谢谢,我明白了,这rejex接受任何数字是这样的: 800.524.1358 800.258.1479 555.145.1234 我希望我的rejext接受这些,我在输入字段 不是所有的数字加号: HTTP:/ /jsfiddle.net/webdesignerart/ShbMv/1/ – Abdullah

+0

@ user836670 - 对不起,但我不明白你的问题是什么。此外,请将您的用户ID更改为实际名称,以便在我们的路径再次交叉时我们会识别对方。 – jfriend00

0

使用\ d其中的数字可以是0 - 9中的任何一个。

+0

thankx您的回复,但我需要我的rejex动态: http://jsfiddle.net/webdesignerart/ShbMv/1/ 现在我的工作形式与800.123.1234数量和查找/替换页面上的数字,但如果添加此号码:866.135.1245我的rejex必须在页面上找到这个数字,所以如何解析数字在我的rejex。 – Abdullah