#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я хотел бы получить число, указанное в маршруте, используя регулярное выражение. Число всегда будет отображаться в четвертой позиции, хотя числа могут быть в третьей позиции и больше (третий, четвертый, пятый и т. Д.).
(знак «x» в приведенных ниже примерах может представлять символы, цифры или символы)
пример маршрутов:
/first/second/third/3
/first/second-xxx/third-xxx-xxx/3
/first/second/third/3/
/first/second/third/3/xxx
/first/second/third/3/xxxx/x
Комментарии:
1. Нам понадобится дополнительная информация, чтобы ответить на этот вопрос. Какой тип регулярных выражений вы используете? Это единственный числовой символ в строке? Могут ли быть две косые черты подряд? Вам нужно отредактировать эту информацию, чтобы мы могли предложить вам лучшее решение. Если вы действительно используете PCRE, а другие части маршрута могут содержать числа, и в них нет двойных косых черт, это было бы моим решением:
^(?:. ?/){3}Kd
.2. @CharlieArmstrong Я надеюсь, что сейчас это имеет больше смысла, хотя я не был уверен, что вы подразумеваете под «двумя косыми чертами подряд» и «регулярным выражением».
3. Разновидность регулярных выражений — это способ, которым конкретный механизм регулярных выражений анализирует регулярное выражение, поскольку все они немного отличаются. Я вижу, вы указали, что это Javascript, так что это именно то, что я искал. Что касается двойной косой черты, что регулярное выражение должно делать с таким маршрутом
/first//third/1/2
? Что касается подсчета косых черт, регулярное выражение должно возвращаться1
, но это то, что вы хотите, чтобы оно делало? Или он должен возвращать2
и считать двойную косую черту как одну косую черту? Предполагая последнее, я бы обновил свое решение следующим образом:^(?:. ?/){3}(d)
4. @CharlieArmstrong Спасибо за объяснение, а в отношении двойных косых черт оно должно возвращать «1»
Ответ №1:
если я понимаю ваш вопрос:
/.*?/.*?/.*?/(d )/*.*
Комментарии:
1. Я изменил » w» на » d «, поэтому я получу только числа (в случае, если есть символы) и более одного, если они существуют.
2. Я тоже изменился.
3. вы забыли добавить » » после «d»
Ответ №2:
Сначала создайте шаблон для поиска перед числом
- ^: С начала строки
- (/ w ){3}: найти три последовательных вхождения ‘SomeWordCharacters’
- /: За которым следует другой ‘/’
Затем объедините это с самим числом в качестве шаблона для вывода
- (?<=^(/w ){3}/): Возьмите шаблон, созданный выше, и найдите его место перед шаблоном, который вы хотите вывести.
- d : интересующий шаблон, который вы действительно хотите вывести
Все вместе:
(?<=^(/w ){3}/)d
Ответ №3:
Обновить
Этот ответ не решает вопрос, поскольку было разъяснено, что x может содержать цифры.
Оригинальный ответ
Если число является единственным числом в строке, этого должно быть достаточно:
[0-9]
Соответствует любому числу длиной 1 или больше.