什么文本匹配这个正则表达式?

时间:2016-06-30 04:04:34

标签: regex

我想弄明白哪种文字与以下正则表达式相匹配,但我无法找到匹配。

^(\d{3}-){2}\d{4}$

此字符串

(111-)(111-)4444

不匹配。

我认为最后应该是3位数和一个减号,在括号之间,整个表达式重复两次,然后是4位数字。

我的想法有什么问题?

3 个答案:

答案 0 :(得分:2)

括号是正则表达式组,而不是文字括号。所以这是一场比赛:

111-111-4444

请参阅Regex101上的example

答案 1 :(得分:2)

括号是正则表达式元字符。如果你想匹配一个文字括号,你需要反斜杠 - 逃避它(在许多正则表达式方言中)。

var urlVars:Object = new Object();
urlVars.name = nameTxt.text;
urlVars.lastname = lastNameTxt.text;

var request:URLRequest = new URLRequest(FIREBASEURL);
request.data = JSON.stringify(urlVars);
request.method = URLRequestMethod.POST;

var firebaseLoader:URLLoader = new URLLoader();
firebaseLoader.addEventListener(flash.events.Event.COMPLETE, function():void
{
    trace(firebaseLoader.data);
});
firebaseLoader.load(request);   

一个简单的括号与任何东西都不匹配;它用于分组和捕获。例如,^(\(\d{3}-\)){2}\d{4}$ 匹配^(a|b)$a。括号将变更分组b,以便无论括号组内的哪个表达式匹配,都需要括号外的内容。类似地,在上文中,非转义括号表示|重复的内容(没有组,它只会重复最后的{2})。

如果您的语言提供了捕获群组,则\)$1\1或其所谓的内容将包含第一对括号内的内容。

答案 2 :(得分:0)

如果您要测试正则表达式,请结帐https://regex101.com

\ d是一个数字,可以是0,1,2,3 ......,9。

{3}表示正好3次出现的数字。所以143,768等等。

344-644-2319将匹配该正则表达式。