0

我需要一个正则表达式从字符串中提取丹麦电话号码。我懂了

var phrase = "Text text text 11 22 33 44 text text.";
phrase = phrase.replace(/^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/, "replace phone number");
alert(phrase);

我找到了这个链接,但它不起作用: http ://www.dbsoftlab.com/etl-tools/regular-expressions/is-danish-phone-number.html

4

3 回答 3

1

在您尝试使用的表达式中,仅当电话号码是字符串中唯一的内容时才会匹配,因为 ^ 匹配字符串的开头而 $ 匹配结尾。

我相信这是一个更简单的正则表达式,它可以工作:

/([0-9]{2} ){3}[0-9]{2}/

因此,您可以说 textStr.replace(/([0-9]{2} ){3}[0-9]{2}/g,'new string')。

在这里检查:http ://refiddle.com/gk8

于 2013-01-23T13:55:50.433 回答
0

问题是^$,它们分别匹配字符串的开头和结尾。由于数字在字符串的中间,因此它们不匹配。删除它们,它可以工作:

> var phrase = "Text text text 11 22 33 44 text text.";
undefined
> phrase = phrase.replace(/((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})/, " replace phone number");
'Text text text replace phone number text text.'
于 2013-01-23T13:55:23.577 回答
0

我会去:

/(?:45\s)?(?:\d{2}\s){3}\d{2}/

这维护了先前正则表达式具有的可选国家/地区代码。我在这里使用非捕获组来提高效率。

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions#Using_Special_Characters

于 2013-01-23T14:00:31.983 回答