我需要在javascript中使用正则表达式匹配以下类型的字符串。
E.g. /this/<one or more than one word with hyphen>/<one or more than one word with hyphen>/<one or more than one word with hyphen>/<one or more than one word with hyphen>
所以这个单一模式应该匹配这两个字符串:
1. /this/is/single-word
2. /this/is-more-than/single/word-patterns/to-match
只有斜杠(/)和&#39;这个&#39;开头的字符串是一致的,只包含字母表。
答案 0 :(得分:1)
答案 1 :(得分:1)
我想你想要这样的事情吗?
(\/this\/(\w+\s?){1,}\/\w+\/(\w+\s?)+)
分解:
\/ # divder
this # keyword
\/ # divider
( # begin section
\w+ # single valid word character
\s? # possibly followed by a space
) # end section
{1,} # match previous section at least 1 times, more if possible.
\/ # divider
\w+ # single valid word character
\/ # divider
( # begin section
\w+ # single valid word character
\s? # possible space
) # end section
答案 2 :(得分:0)
这可能是显而易见的,但是为了将每个模式作为单独的结果匹配,我相信你想在整个表达式周围放置括号,如下所示:
(\/[a-zA-Z ]+\/[a-zA-Z ]+\/[a-zA-Z ]+\/[a-zA-Z ]+)
这确保返回两个结果,而不仅仅是一个大组。
另外,你的问题没有说明&#34;这个&#34;将是静态的,因为其他答案假设...它说只有斜杠是静态的。这适用于任何文本组合(不需要单词this
)。
编辑 - 实际上回顾你的尝试,我看到你在表达中使用了/ this /,所以我认为这也是其他人也这样做的原因。
答案 3 :(得分:0)
修改后的问题样本:
/this/is/single-word
/this/is-more-than/single/word-patterns/to-match
再次修改The sections may have hyphen (no spaces) and there may be 3 or 4 sections beyond '/this/'
修改后的模式/^\/this(?:\/[a-zA-Z]+(?:-[a-zA-Z]+)*){3,4}$/
^
/this
(?:
/ [a-zA-Z]+
(?: - [a-zA-Z]+ )*
){3,4}
$