如何匹配一个不包含某一个或者几个单词的正则

wukon 发布于 2013/08/16 09:36
阅读 3K+
收藏 0
我想写一个匹配 s结尾的纯字母字符串,但是不包含 images ,css这两个单词,比如

asdfjs  包含
aaaaas  包含
ddddd   不包含
images  不包含
a2js    不包含

请问这么写? 


补充:我的目的是 地址栏重写,比如  /ssss/aaa.aspx 重写成  /books/ssss/aaa.aspx 文件,但是 /images/aaa.jpg 这个路径的话,并不重写。 这样不匹配 一部分路径不可以吗?这种思路不可取?

加载中
1
lock_free
lock_free

\w*(?<!(?:images|css))s\b

images 匹配

imagess 不匹配

css 匹配

csss 不匹配

wukon
wukon
回复 @--风萧萧-- : 什么例子? 我之前是想匹配纯字母,并且s结尾,但是又不是images和css的。就这样。就是把你前面的换成字母表示的就是我想要的了。
lock_free
lock_free
回复 @wukon : 能给几个 例子吗?象上面一样的。
wukon
wukon
可以使用,谢谢。 我之前说明写漏了一点,不匹配数字的,不过这个我知道怎么在你的基础上改了。
1
Kabie
Kabie
你把静态规则放重写规则的前面不就好了
wukon
wukon
对噢,换个思路也可以啊,谢谢。之前思考的话是想尽量少一些的匹配规则,而且我觉得不匹配一个单词的正则应该简单的,所以一直往这方向思考了。
0
iSea
iSea
你的题目是不是有问题?
wukon
wukon
你是指什么问题?我是想匹配地址栏路径,就是 匹配一个单词以s结尾,但是 images,css 这两个单词不在其中,这样不可以吗?
0
JonyZhang
JonyZhang

需求有问题。

首先,判断 (/[a-z]/gi).test("asfasfas") 看是不是一个纯字母字符串
然后,看其中是否包含images、css字符

有时候解决问题可以换种思路,正则表达式不是万能的,换种思路,条理也清晰,解决问题也顺畅

wukon
wukon
回复 @JonyZhang : 你这样的话,就不能匹配到s结尾的了。刚刚我试了一下别人提供的,再自己修改了一下 [a-z]*(?<!(?:image|cs))s\b 这个可以用。
JonyZhang
JonyZhang
回复 @wukon : 就是不能换个思路吗? 按你的需求 !/(?:images\/|css\/)/.test("/images/aaa.jpg") 不就可以判断出来了吗
wukon
wukon
我的目的是 地址栏重写,比如 /ssss/aaa.aspx 重写成 /books/ssss/aaa.aspx 文件,但是 /images/aaa.jpg 这个路径的话,并不重写。 这样不匹配 一部分路径不可以吗?这种思路不可取?
0
kiwivip
kiwivip
(?:(?<!image)|(?<!cs)|[a-z]+)s
0
wukon
wukon

引用来自“--风萧萧--”的答案

\w*(?<!(?:images|css))s\b

images 匹配

imagess 不匹配

css 匹配

csss 不匹配

[a-z]*(?<!(?:image|cs))s\b

不匹配 images 和 css ,可以匹配 imagess

返回顶部
顶部