正则表达式模式匹配一​​种字符串

时间:2014-03-24 17:33:12

标签: javascript regex

我需要在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;开头的字符串是一致的,只包含字母表。

4 个答案:

答案 0 :(得分:1)

您可以使用:

\/this\/[a-zA-Z ]+\/[a-zA-Z ]+\/[a-zA-Z ]+

Working Demo

答案 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

Working example

答案 2 :(得分:0)

这可能是显而易见的,但是为了将每个模式作为单独的结果匹配,我相信你想在整个表达式周围放置括号,如下所示:

(\/[a-zA-Z ]+\/[a-zA-Z ]+\/[a-zA-Z ]+\/[a-zA-Z ]+)

这确保返回两个结果,而不仅仅是一个大组。

另外,你的问题没有说明&#34;这个&#34;将是静态的,因为其他答案假设...它说只有斜杠是静态的。这适用于任何文本组合(不需要单词this)。

编辑 - 实际上回顾你的尝试,我看到你在表达中使用了/ this /,所以我认为这也是其他人也这样做的原因。

演示:http://rubular.com/r/HGYp2qtmAM

答案 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}
 $