Почему это регулярное выражение JavaScript не работает?

#javascript #jquery #regex #alpha

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

Вопрос:

По какой-то причине это не работает, хотя все мои поиски говорят, что это должно работать.

У меня есть идентификатор элемента, в котором я пытаюсь увеличить значение на 1.

итак, допустим, у меня есть

 <input id="someText1">
  

Я хочу изменить 1 на 2, поэтому в итоге я получаю

 <input id="someText2">
  

Я попытался сопоставить только текст, используя

 text = $("input").attr("id").match(/^[a-zA-Z] $/);
  

Но когда я вывожу значение text, я получаю null

Пожалуйста, помогите!

Комментарии:

1. Я боюсь ситуации, которая заставляет вас чувствовать, что вы должны это сделать. Можете ли вы опубликовать свою конечную цель, чтобы я, возможно, мог предложить другой подход?

Ответ №1:

Удалите $ знак (текст действительно заканчивается цифрой, и вы говорите ему, что он заканчивается буквой)

Ответ №2:

Ваше регулярное выражение должно быть

 text = $("input").attr("id").match(/^[a-zA-Z0-9] $/);
  

Вам это нужно?

 var text = $("input").attr("id").replace(/[0-9] $/, "");
var num = $("input").attr("id").replace(/^[a-zA-Z] /, "");
  

Ответ №3:

match Селектор должен точно соответствовать идентификатору, и поскольку ваше регулярное выражение соответствует любой строке, содержащей ТОЛЬКО a-z и A-Z, оно не совпадает someText1 ! Вы должны попробовать

 ^[a-zA-Z] [0-9]$
  

Ответ №4:

Я бы предложил использовать селектор имен классов, например $('.inputs') , поскольку это будет быстрее, чем получать все входные элементы на странице, а затем фильтровать по идентификатору (особенно в современных браузерах).