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