帮解释下正则表达式,看不懂啊.不能把一个字符类当作一个范围的终点使用 所以ereg('[A-[:lower:]]','string');是非法的正则表达式..ereg('[@[:digit:][:upper:]]'); 又是合法的啊,我都晕了 为什么?看不懂

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 01:43:20

帮解释下正则表达式,看不懂啊.不能把一个字符类当作一个范围的终点使用 所以ereg('[A-[:lower:]]','string');是非法的正则表达式..ereg('[@[:digit:][:upper:]]'); 又是合法的啊,我都晕了 为什么?看不懂
帮解释下正则表达式,看不懂啊.
不能把一个字符类当作一个范围的终点使用 所以ereg('[A-[:lower:]]','string');是非法的正则表达式..
ereg('[@[:digit:][:upper:]]'); 又是合法的啊,我都晕了 为什么?看不懂

帮解释下正则表达式,看不懂啊.不能把一个字符类当作一个范围的终点使用 所以ereg('[A-[:lower:]]','string');是非法的正则表达式..ereg('[@[:digit:][:upper:]]'); 又是合法的啊,我都晕了 为什么?看不懂
我也是初学这个,帮你理解一下,有错误的地方多多包涵,
不能把一个字符类当作一个范围的终点使用:
首先,你得明白[]的作用,[] 这对中括号里包涵的东西,代表一个字符的匹配,比如[a-z]代表任意一个小写字母的匹配,注意,是一个,就是说,a-z是这个匹配的范围,再看你的例子:[A-[:lower:]] 外面这对中括号里的范围应该是A-[:lower:],这个[:lower:]是posix风格的字符类,代表一个小写字母,也就是完全等同于我前面写的那个[a-z],知识写法不一样,但是他不能作为外面那个中括号的范围的终点,ok,明白了吧?
ereg是php里的一个字符匹配函数,他最少需要两个参数,第一个一般就是个正则表达式,第二个是需要检查的字符串,第三个参数可选,是存放的数组,你的这个ereg('[@[:digit:][:upper:]]'); 只有一个参数,这个我也不大懂,可能第二个参数被默认成空字符串了吧,所以返回的bool类型应该是false,你可以用个if语句测试下.