По сути, поле ввода - это просто строка. Люди вводят свой номер телефона в различных форматах. Мне нужно регулярное выражение, чтобы найти и преобразовать эти числа в ссылки.
Примеры ввода:
(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);
Может ли кто-нибудь помочь мне исправить это или предложить лучший способ сделать это?
EDIT:
Спасибо всем. Вот что у меня так далеко:
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-значный номер и связывает его таким образом. Однако, если указан код города, он не сопоставляется. Есть идеи, что я делаю не так?
Второе редактирование:
Теперь все работает. Все, что я сделал, это удалил \b
из начала строки.