1.[a-z]在java中匹配一个英文字母。在javascript中,被测试字符串中包含一个英文字幕都被被接受。
2。[a-z]*java匹配纯英文字幕。^[a-z]$在javascript中匹配纯英文字幕。
主要区别为,一个正则表达式,在java中要求被测试字符串完全匹配,在javascript中要求,只要字符串中有一部分匹配就可以。
上边的这个结论对java和javascript中的理解不透彻:
javascript:
match和exec的函数的目的是找到字符串中,符合模式的字符串
match和exec找到尽可能多的字符串
对字符串!取得的是false,对null进行!取得的是true
而java直接得到的就是true或false。
关于javascript的正则表达式。
field.value.match("[a-z]")与(Struts2 Validation这么使用的)
field.value.match(\[a-z]\)含义相同(有的资料上这么说的)
有的资料在讲的时候说正则表达式必须包含在\\之间,有的没说。
关于转义字符
javascript
field = '_jimjimf112gds'
alert(field.match(/\w+/))这样匹配所有字符串。但当使用""时,必须对\\进行转义。也就是说alert(field.match("+"))匹配所有字符串。alert(field.match("\w+"))匹配的是w字母。这是因为字符串使用斜线作为转义字符。"\w"中的\被忽略。也就是:alert(field.match("\w+"))匹配的是w字母。这就体现出在使用\\包含表达式时的优势了——不必转义
在java中也有字符串转义的问题:
System.out.println(Pattern.matches(""));
为true,而System.out.println(Pattern.matches("\w+","dfsasdf"));是不能被编译的。
所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
定位符用于规定匹配模式在目标对象中的出现位置。
field = 'jim\wtoo,totooaztA3213142jimtof112gds'
alert(field.match(/[^a-c]+/))=jim\wtoo,totoo
而alert(field.match(/[^a-c]/))=j
结论是:匹配尽可能多的字符串,是在含有+或*的情况下。
关于javascript优先级:
1.\ 转义符
2.(), (?:), (?=), [] 圆括号和方括号
3.*, +, ?, {n}, {n,}, {n,m} 限定符
4.^, $, \anymetacharacter 位置和顺序
5.|“或”操作
关于被操作对象单元(我总结的)
alert(field.match("abc+"))的+的被操作符其前边的c而不是abc。想让abc作为一个被操作单元,需要写为alert(field.match("(abc)+"))
[]内会作为一个被操作单元来匹配一个字符串