^(!?\/[a-zA-Z0-9-_]*\/[a-zA-Z0-9-_]*\/[a-zA-Z0-9]{13})$
这是regex
,除了URL
/something/something/13-character-group
所以,如果我做:
/something/something/123456789012
这匹配
/something/something/1234567890123
这不符合
Tnx很多!
答案 0 :(得分:2)
这应该有效!
var str1 = '/something/something/123456789012';
var str2 = '/something/something/1234567890123';
var re = /^(\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+\/(?![a-zA-Z0-9]{13}$)[a-zA-Z0-9]+)$/;
alert(re.test(str1));
alert(re.test(str2));
看起来像这样。
regex http://f.cl.ly/items/3G3z2s0n2J3E1J1J2s03/orreMBA%202013-08-23%20kl.%2012.40.14.PNG
来自Regexper.com的图片
答案 1 :(得分:2)
通过匹配除/something/something/13-character-group
之外的每个网址,我假设你的输入字符串在你提问的那些之前和之后都有字符。
首先要注意的是:使用(?! ... )
(而不是!?
调用负前瞻,因为这意味着1 !
个字符或无字符。然后,要在URL中的任何位置查找此字符串,您必须在模式之前使用.*
并在模式之后使用单词边界:
^(?!.*/[a-zA-Z0-9-_]*/[a-zA-Z0-9-_]*/[a-zA-Z0-9]{13}\b).+$
最后.+
与实际网址相匹配。