regex 需要正则表达式为丹麦电话号码

r6vfmomb  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(137)

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

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

pcww981p

pcww981p1#

在您尝试使用的表达式中,只有当电话号码是字符串中唯一的内容时,它才会匹配,因为^匹配字符串的开头,而$匹配字符串的结尾。
我相信这是一个简单得多的正则表达式:

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

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

lokaqttq

lokaqttq2#

问题是^$,它们分别匹配字符串的开头和结尾。因为数字在字符串的中间,所以它们不匹配。删除它们,它会起作用:

> 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.'
ycggw6v2

ycggw6v23#

我会说:

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

这将维护前一个正则表达式具有的可选国家代码。我在这里使用非捕获组以提高效率。
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions#Using_Special_Characters

相关问题