基本上,输入字段只是一个字符串。人们以各种格式输入他们的电话号码。我需要一个正则表达式来查找这些数字并将其转换为链接。
输入示例:
(201) 555-1212
(201)555-1212
201-555-1212
555-1212
这就是我想要的:
<a href="tel:(201)555-1212">(201) 555-1212</a> - Notice the space is gone
<a href="tel:(201)555-1212">(201)555-1212</a>
<a href="tel:201-555-1212">201-555-1212</a>
<a href="tel:555-1212">555-1212</a>
我知道它应该比仅仅删除空格更强大,但它适用于我的员工将从他们的 iPhone 访问的内部网站。所以,我愿意“让它发挥作用”。
以下是我目前在 C# 中所掌握的内容(它应该向您展示我对正则表达式知之甚少):
strchk = Regex.Replace(strchk, @"\b([\d{3}\-\d{4}|\d{3}\-\d{3}\-\d{4}|\(\d{3}\)\d{3}\-\d{4}])\b", "<a href='tel:$&'>$&</a>", RegexOptions.IgnoreCase);
任何人都可以通过解决此问题或提出更好的方法来帮助我吗?
编辑:
谢谢大家。这是我到目前为止所得到的:
strchk = Regex.Replace(strchk, @"\b(\d{3}[-\.\s]\d{3}[-\.\s]\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]\d{4}|\d{3}[-\.\s]\d{4})\b", "<a href='tel:$1'>$1</a>", RegexOptions.IgnoreCase);
除了带有 (nnn) 区号的区号,它和 7 位数字之间有或没有空格,它几乎可以接收所有内容。它确实拾取了 7 位数字并以这种方式链接。但是,如果指定了区号,则不会匹配。知道我做错了什么吗?
第二次编辑:
现在可以工作了。我所做的只是\b
从字符串的开头删除。