1

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

例子:

  • test/test2/test.html --> true
  • 文件/test2/test.html --> false
  • test/test2/test .js --> false
  • 文件/test2/test .js --> false

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

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

编辑: 很抱歉造成误解。仅当字符串不以“files/”开头且不以“.js”结尾时,该字符串才应匹配。

4

5 回答 5

3

您最后的否定应该是向后看而不是向前看,在测试时您已经阅读了.js

^(?!files\/).*(?<!\.js)$
于 2012-10-16T17:19:24.757 回答
2

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

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

您正在检查最后一个字符前面是否没有“.js”,这总是正确的。

于 2012-10-16T17:19:34.387 回答
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
于 2012-10-16T16:56:12.880 回答
1
var re = /^files\/.*|.*\.js$/;
alert(re.test('your-strings'));

编辑

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

var re = /^files\/.*|.*\.js$/;
alert(!re.test('your-strings'));
于 2012-10-16T17:01:09.757 回答
1

你可以使用这个正则表达式

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

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

if(/*regex matches the string*/)
{
//you dont need this string
}
else
{
//you do need this string
}
于 2012-10-16T17:02:13.320 回答