如何正则表达式测试字符串的模式,同时排除某些字符?

时间:2014-01-18 13:54:08

标签: javascript regex pattern-matching

我无处可去......

如果字符串包含%2且同时不包含/,我需要对其进行测试。我无法使用正则表达式来工作。这就是我所拥有的:

var re = new RegExp(/.([^\/]|(%2))*/g);
var s = "somePotentially%2encodedStringwhichMayContain/slashes";

console.log(re.test(s))  // true

问题
如果字符串包含%2而不包含任何/斜杠,我该如何编写检查字符串的正则表达式?

3 个答案:

答案 0 :(得分:2)

尝试以下方法:

^(?!.*/).*%2

答案 1 :(得分:2)

虽然Sebastian S.提到的链接是正确的,但有一种更简单的方法可以做到这一点,因为你只需要检查单个字符是否不在字符串中。

/^[^\/]*%2[^\/]*$/

enter image description here

编辑:太晚了......好吧:P

答案 2 :(得分:1)

使用反向匹配,如下所示:Regular expression to match a line that doesn't contain a word?

或在if语句中使用indexOf(char)。 indexOf返回字符串中字符串或char的位置。如果未找到,则返回-1:

var s =“test /”; 如果(s.indexOf( “/”)!= - 1){

//包含“/”

}其他{

//不包含“/” }