2016-02-18 6 views
1

Я хочу, чтобы удалить номер, содержащий от 6 до 8 цифр, поэтому регулярное выражение, я использую это: \ б \ д {6,8}условное регулярное выражение - Javascript

Он отлично работает, но это если у меня есть два числа, разделенные символом подчеркивания (_), например 1234567890_123456789 Я хочу, чтобы это было удалено. Я должен использовать \ b (границу).

Мне кажется, что условие:

номера матча между 6 и 8 цифрами, но если вы видите два числа, разделенного подчеркивание сопрягать их тоже (независимо от количества цифр в каждом номере).

матч: 12345678

матч: 12345678934567_123456789

матч: 123_23

не ровня: 12345

Мне нужен один регулярное выражение, которое обрабатывает оба случая.

Большое спасибо.

ответ

3

Попробуйте следующее:

\b(?:\d{6,8}|\d+_\d+)\b 

Это просто 6 до 8 цифр или любой number_number.

Click here для просмотра в действии.

+0

Привет Нил, я не могу использовать последнюю \ б, мне нужно что-то, что будет работать без последнего \ б Thanks – Asaf

+0

@AsafCohen Если удалить последний \ б, то это будет соответствовать номера больше 8 цифр. Если за ним следуют буквы, а не цифры, вы также можете заменить '\ b' на' (?: [^ _ \ D] | $) '. [См. Здесь] (https://regex101.com/r/wF6eE7/7). – Neil

+0

Вот что мне нужно. Спасибо! – Asaf

1

Вы можете использовать этот

^(\d+_\d+)|(\d{6,8})$ 

Это регулярное выражение содержит две части:

  1. (\d+_\d+) охватывает случаи с "_" символ;

  2. (\d{6,8}) охватывает другие случаи

+0

Это будет соответствовать '______',' _1234_' и т. Д. – Michelle

+0

Обновлено регулярное выражение для соответствия этим случаям –

+1

Вам не нужен класс символов в '[\ d]' – Tushar

0

Вы можете попробовать это одно, а:

\b\d+(?:\d{4,6}|_)\d+\b 

И если вы хотите, чтобы позволить более одного _ символов, попробуйте это:

\b\d+(?:\d{4,6}|_[\d_]*)\d+\b 

Этот второй будет соответствовать этому: 12345678934567_1234567890_123456789

Смежные вопросы