Регулярное выражение Javascript не соответствует пробелам

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Я пытаюсь сопоставить следующую строку в регулярном выражении Javascript

PC123456

Это то, что у меня есть:

 /^PCd*/
  

Это работает для каждого экземпляра, за вычетом одного с пробелом после «PC», который работает, но должен завершиться неудачей.
Пример:

PC 123456

Это должно завершиться неудачей. Что мне нужно добавить, чтобы второе условие не выполнялось?

Ответ №1:

Измените ваше регулярное выражение на это:

 /^PCd $/
  

Для этого требуется хотя бы одна цифра, и она соответствует, только если в строке больше ничего нет, кроме PC и цифр.

Это будет соответствовать:

 PC123456
PC1
PC99
  

Оно не будет соответствовать:

 PC 12345
PC
PCx1234
  

Ответ №2:

Вам нужно добавить привязку к концу исходного кода:

 /^PCd*$/
  

«$» в конце настаивает на том, чтобы шаблон соответствовал всей строке. Без него «PC» без сразу следующих цифр не совпадает, потому что «*» означает «ноль или более», а не «один или более».

В качестве альтернативы вы могли бы изменить «*» на » «, но я не знаю, допустимо ли само по себе «PC» в вашем приложении.

Ответ №3:

Требуется хотя бы одна цифра после PC

 /^PCd /
  

или требовать, чтобы строка длилась всю строку

 /^PCd*$/