Как я могу сопоставить числовую последовательность любой длины через регулярное выражение? - PullRequest
0 голосов
/ 16 апреля 2020

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

. Например, примерные строки:

4. html 32. html 46352. html

Таким образом, в основном любое число, за которым следует .html.

Ответы [ 4 ]

2 голосов
/ 16 апреля 2020

console.log("ColdFusion 123.html! hey 7689".match(/\d+\.html/)[0])

Или в вашем случае: REFind("\d+\.html", "ColdFusion 123.html! hey 7689")

^ в "\ d + / ^. Html $ /" не экранирует .. Чтобы убежать ., вам нужно использовать \. Также $ означает «конец строки», а 123.html не в конце. И я не знаю, что / вокруг ^.html$ означает в ColdFusion , но они, безусловно, выглядят странно для меня.

0 голосов
/ 17 апреля 2020

Если вы ищете текст для нескольких совпадений, вы должны / могли бы использовать повторное сопоставление или rematchnocase (без учета регистра), например:

<Cfdump var="#rematch("\d+\.html", "Test string 123.html! testing a little mor bla.html. Stil testing 1.html")#">

Вы можете просмотреть онлайн-пример здесь: https://trycf.com/gist/5426f17eda973b3819efefc04e8fd311/lucee5?theme=monokai

0 голосов
/ 17 апреля 2020
 REFindNoCase("\d+\.html", str, 1, 1);

Это даст вам хотя бы одно число, за которым следует буквальная строка «.» сопровождаемый литеральной строкой "html".

Если вы хотите, чтобы она чувствительна к регистру, просто используйте версию REFind ():

 REFind("\d+\.html", str, 1, 1);

Вот и все!

0 голосов
/ 17 апреля 2020

Если регулярное выражение не является обязательным, вы можете сделать это с помощью функций ColdFusion:

if (
listlen(yourstring, '.') == 2 
&&
listlast(yourstring, '.') == 'html'
&&
isnumeric(listfirst(yourstring, '.')) == true
)
code for match
else
code for no match
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...