Итак, я сделал это регулярное выражение: [0-3][0-9][0-1][0-9]\d{2}-\d{4}?[^0-9]
Но когда я использую это регулярное выражение, он найдет числа как 100880-1098.
Но он также найдет числа как 661651100880-1098.
Есть ли способ закрыть его с обоих концов, чтобы он не отображал числа до или после "100880-1098"?
Я пробовал ^[0-3][0-9][0-1][0-9]\d{2}-\d{4}?[^0-9]$
но это не работает
Итак, если я получил код «\ b [0-3] [0-9] [0-1] [0-9] \ d {2} - \ d {4}? [^ 0-9]». тогда он все равно найдет это "111111-1111a". Как мне заставить его принимать только числа и не позволять последней букве также быть хитом?
Регулярное выражение \bX\b будет соответствовать «X» в строке «a X b», а также «X», но не в строке «aXb», «aX b» или «a Xb». В то время как регулярное выражение ^X$ будет соответствовать только строке «X». Я предполагаю, что вы пытаетесь сопоставить свои числа как часть строки, а не как целую строку. И цифры, и буквы являются символами слов.
Но если я сделаю «^ [0-3] [0-9] [0-1] [0-9] \ d {2} - \ d {4}? [^ 0-9] $», я не получу совпадений . Если я сделаю "\ b [0-3] [0-9] [0-1] [0-9] \ d {2} - \ d {4}? [^ 0-9] \ b", я все равно получу буква после моих цифр
Я только что заметил, что у вас в конце [^0-9]. Из-за отрицания класса ^, это соответствует чему-либо, кроме цифры. Так что эта часть будет соответствовать также букве. Так действительно ли вашему регулярному выражению нужна эта часть?
Если я удалю часть [^ 0-9]. я получу хиты «111111-1111111111-1111». поэтому он будет попадать в числа после чисел, которые я хочу
теперь он работает с \ b [0-3] [0-9] [0-1] [0-9] \ d {2} - \ d {4} \ b. Спасибо за ответ
Молодец :) Кстати, как альтернатива использованию границ слов. Также есть Осмотры. Хотя регулярное выражение javascript знает только прогноз. Это способ что-то проверить, не принимая во внимание результат матча. F.e. [0-9](?=[^0-9]) или [0-9](?![0-9])





Я предлагаю поставить граница слова в начале и в конце регулярного выражения. Граница слова
\bсоответствует переходу между символом слова и символом, не являющимся словом.