Я знаю, что существует тонна regex примеров о том, как соответствовать определенным типам номера телефона. Для моего примера я просто хочу позволить числа и несколько специальных символов. Я снова испытываю затруднения при достижении этого.
Номера телефона, которые должны быть позволены, могли принять эти формы
5555555555
555-555-5555
(555)5555555
(555)-555-5555
(555)555-5555 and so on
Я просто хочу что-то, что позволит [0-9] и также специальные символы' (', ')', и '-'
до сих пор мое выражение похоже на это
/^[0-9]*^[()-]*$/
Я знаю, что это неправильно, но логически я полагаю, что это означает, позволяют номера 0-9 или и позволяют символы (), и-.
^(\(\d{3}\)|\d{3})-?\d{3}-?\d{4}$
\ (\ d {3} \) | \ d {3}
три цифры с или без ()
- Более простое регулярное выражение будет \ (? \ d {3} \)?
, но это позволит (555-5555555
и 555) 5555555
и т. д. -
, за которым следуют три цифры -
, за которым следуют четыре цифры . Обратите внимание, что это все равно позволит 555555-5555
и 555-5555555
- Я не знаю, описаны ли они в вашей и т. Д. части
Это соответствует желаемым числам, (,) и -
/^[0-9()-]+$/
Почему у вас там заблудший ^
? Я думаю, вы имели в виду [() -]
Это на самом деле заставляет вас иметь в регулярном выражении два начала строки, которые никогда не будут совпадать.
Кроме того, \ d
- удобный ярлык для [0-9]
. Они точно такие же.
Кроме того, это будет соответствовать только группе чисел, а затем группе (
или )
или -
. Что-то вроде: 1294819024 () () () () () ----- () -
будет соответствовать. Я думаю, вы хотите, чтобы все это повторялось, например: ^ (\ d * [() -] *) * $
. Теперь вы можете сопоставить повторяющиеся последовательности этого.
Теперь важно отметить, что вложенные *
обычно неэффективны, мы можем понять, что мы просто хотим сопоставить любую цифру и желаемую пунктуацию: [\ d () - ] *
Второй карат (афаик) сломает все, что вы делаете, поскольку он означает «начало цепочки».
Похоже, что вы просите:
Что не будет работать, даже если этот второй карат ничего не даст, потому что вы 'не учитывает ничего после первого' (',') 'или' - ', и на самом деле, вероятно, будет проверять только пустую строку, если это так.
Вам нужно / ^ [0-9 () -] + $ /
для очень грубого шаблона, который будет «работать».
Для цифр вы можете использовать \ d
. Для более чем одной цифры вы можете использовать \ d {n}
, где n
- количество цифр, которые вы хотите сопоставить. Некоторые специальные символы должны быть экранированы, например \ (
соответствует (
. Например: \ (\ d {3} \) \ - \ d {3} \ - \ d {4}
соответствует (555) -555-5555.
Если вы используете только число US, лучшим решением будет удалить все нецифровые символы, а затем просто проверить, что длина == 10.