匹配不以开头或结尾的字符串

时间:2012-10-16 16:49:50

标签: regex

如果字符串以“files /”开头和/或以“.js”结尾,我该如何测试?

示例:

  • test / test2 / test.html - >真
  • 文件 /test2/test.html - >假
  • test / test2 / test .js - >假
  • 文件 / test2 / test .js - >假

到目前为止,我有这个正则表达式:(^(?!files\/)).*?((?!\.js)$)

这适用于“files /”但不适用于“.js”。

修改 很抱歉对于这个误会。如果字符串不以“files /”开头且不以“.js”结尾,则字符串应该匹配。

5 个答案:

答案 0 :(得分:3)

你的最后一个消极情绪应该是看看背后的未来,在测试时你已经阅读了.js

^(?!files\/).*(?<!\.js)$

答案 1 :(得分:2)

这是一个正则表达式,可以满足您的需求。

(^(?!files\/)).*((?!\.js).{3}$)

你正在检查最后一个角色前面是否有“.js”,这总是正确的。

答案 2 :(得分:1)

!/^files\/|\.js$/.test('files/test2/test.js') -> false
!/^files\/|\.js$/.test('files/test2/test.html') -> false
!/^files\/|\.js$/.test('test/test2/test.js') -> false
!/^files\/|\.js$/.test('test/test2/test.html') -> true

答案 3 :(得分:1)

var re = /^files\/.*|.*\.js$/;
alert(re.test('your-strings'));

修改

不用担心,只是反转结果:

var re = /^files\/.*|.*\.js$/;
alert(!re.test('your-strings'));

答案 4 :(得分:1)

您可以使用此正则表达式

^(files/.*|.*\.js)$

由于您不希望字符串结束或以文件和/或j开头,请使用上面的正则表达式并执行此操作

if(/*regex matches the string*/)
{
//you dont need this string
}
else
{
//you do need this string
}