使用Excel中的VBA测试如下(匹配式为:^((?!2950).)*$):
Sub Regs()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.regexp")
Dim s, mat
s = "399295078"
RegEx.Pattern = "^((?!2950).)*$"
RegEx.Global = True
MsgBox RegEx.test(s)
Set RegEx = Nothing
End Sub
如果匹配2950,则返会false,否则为true。
其中,(?!2950)表示不匹配2950,
而^表示匹配字符串的开始位置,
.表示匹配除 "\n" 之外的任何单个字符,
$表示匹配字符串的结束位置,
*表示匹配前面的子表达式零次或多次。
整个匹配式连起来就是:匹配空值或者匹配不含2950的字符串。
其中(?!2950)后面必须加一个".",那么(?!2950).表示不含2950且至少有一个字符。其实整个就是(?!2950)和(.)*的组合,(.)*表示空串或者任意一个串(不包含\n)。
22222222222222222
常见函数 strstr($str, "abc");
正则匹配 preg_match("/(abc)?/is", $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, "abc"); 就可以解决问题了
但是用正则呢,就只有这样了,"/^((?!abc).)*$/is"
33333333333333333
常见函数 strstr($str, "abc");
正则匹配 preg_match("/(abc)?/is", $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, "abc"); 就可以解决问题了
但是用正则呢,就只有这样了,"/^((?!abc).)*$/is"
//------------------------------------------------
复制代码 代码如下:
//------------------------------------------------
结果为:false,含有abc!
$str = "2b3c4d5c";
注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中,
preg_match("/[^(abc)]/s", $str, $arr);
其中字符 2 就不在 a b c 中,所以$arr返回值为2;
同时匹配,包含字符串 "abc",而且不包含字符串 "xyz"
"/(abc)[^((?!xyz).)*$]/s"
详细出处参考:http://www.jb51.net/article/19910.htm
44444444444444444444
(?!((\w)*java(\w)*)
这个是不匹配的
555555555555555555555555
String regex = "(?:(?!party).)*";
欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/program/java/JAVA02/200806/16 02138_2.html
6666666 [此问题的推荐答案]
^((?!sound).)+$
这个只要有sound出现就不匹配.
有的表达式可能需要MULTILINE多行模式 .
/c/sound/1.mp3 不匹配
/c/so/und/1.mp3 匹配
/c/s/1.mp3 匹配
/c/qwersoundzxcv/1.mp3 不匹配
找出所有img标签的,没有带说明属性alt的标签:
正则:]*?alt[^]*?>).*?>
例子:
扩展,如果要找没有带title属性的a应该是:
正则:]*?title[^]*?>).*?>
例子:
Sub Regs()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.regexp")
Dim s, mat
s = "399295078"
RegEx.Pattern = "^((?!2950).)*$"
RegEx.Global = True
MsgBox RegEx.test(s)
Set RegEx = Nothing
End Sub
如果匹配2950,则返会false,否则为true。
其中,(?!2950)表示不匹配2950,
而^表示匹配字符串的开始位置,
.表示匹配除 "\n" 之外的任何单个字符,
$表示匹配字符串的结束位置,
*表示匹配前面的子表达式零次或多次。
整个匹配式连起来就是:匹配空值或者匹配不含2950的字符串。
其中(?!2950)后面必须加一个".",那么(?!2950).表示不含2950且至少有一个字符。其实整个就是(?!2950)和(.)*的组合,(.)*表示空串或者任意一个串(不包含\n)。
22222222222222222
常见函数 strstr($str, "abc");
正则匹配 preg_match("/(abc)?/is", $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, "abc"); 就可以解决问题了
但是用正则呢,就只有这样了,"/^((?!abc).)*$/is"
33333333333333333
常见函数 strstr($str, "abc");
正则匹配 preg_match("/(abc)?/is", $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, "abc"); 就可以解决问题了
但是用正则呢,就只有这样了,"/^((?!abc).)*$/is"
//------------------------------------------------
复制代码 代码如下:
//------------------------------------------------
结果为:false,含有abc!
$str = "2b3c4d5c";
注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中,
preg_match("/[^(abc)]/s", $str, $arr);
其中字符 2 就不在 a b c 中,所以$arr返回值为2;
同时匹配,包含字符串 "abc",而且不包含字符串 "xyz"
"/(abc)[^((?!xyz).)*$]/s"
详细出处参考:http://www.jb51.net/article/19910.htm
44444444444444444444
(?!((\w)*java(\w)*)
这个是不匹配的
555555555555555555555555
String regex = "(?:(?!party).)*";
欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/program/java/JAVA02/200806/16 02138_2.html
6666666 [此问题的推荐答案]
^((?!sound).)+$
这个只要有sound出现就不匹配.
有的表达式可能需要MULTILINE多行模式 .
/c/sound/1.mp3 不匹配
/c/so/und/1.mp3 匹配
/c/s/1.mp3 匹配
/c/qwersoundzxcv/1.mp3 不匹配
找出所有img标签的,没有带说明属性alt的标签:
正则:]*?alt[^]*?>).*?>
例子:
扩展,如果要找没有带title属性的a应该是:
正则:]*?title[^]*?>).*?>
例子: