В принципе, поле ввода - это просто строка. Люди вводят свой номер телефона в различных форматах. Мне нужно регулярное выражение для поиска и преобразования этих чисел в ссылки.Мне нужно регулярное выражение для преобразования американского телефонного номера в ссылку
Входные примеры:
(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 цифр. Он выбирает 7-значный номер и связывает его таким образом. Однако, если код области указан, он не подходит. Любая идея, что я делаю неправильно?
Второе редактирование:
Понял работает. Все, что я сделал, это удалить \b
с начала строки.
Какие источники вы ожидаете? Разве вы не можете просто удалить все пробелы? – NullUserException
Номера телефонов иногда расположены в больших блоках текста. – BoltBait