正则表达式模式匹配
- g 表示全局模式,匹配所有相符而不是发现第一个就停止
- i 表示不区分大小写
- m 表示多行
使用元字符必须转义
( [ { \ ^ $ | ) ? * + . ] }
语法 http://www.runoob.com/regexp/regexp-syntax.html
https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx
exec
参照mdn描述的很清晰。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
lastIndex属性可能还需要以后更深层理解。exec()远比test()方法内容多。
相似的方法 String.search() String.match() RegExp.test() RegExp.exec()的区别。
如果只想得到字符串是否匹配正则,用test(),返回true or false。
如果想得到匹配字符的位置,用search()。返回index or -1。
如果想得到匹配的字符串,用match,其中exec的index[0]和match方法返回值完全一样。
当上述方法都无法满足你,那么就需要用exec()。
RegExp构造函数属性
- input $_
- lastMatch $&
- lastParen $+
- leftContext $`
- multiline $*
- rightContext
′左面为长属性名,右边是对应的短属性名,短属性名opera和部分ie浏览器不支持。
1-$9为短属性名存储捕获组。
ECMAScript的正则表达式还有着一些局限性。 - 不支持字符串开始结束的\A,\Z
- 不支持向后查找
- 不支持交集、并集
- 不支持原子组
- 不支持Unicode(单字符除外)
- 不支持命名捕获组
- 不支持s单行、free-spacing 无间隔匹配模式
- 不支持条件匹配
- 不支持正则注释
一些需要记忆正则
//匹配汉字
var reg = /^[\u4e00-\u9fa5]+$/;
//正整数,可匹配000
var reg = /^\d+$/;
//正整数
var reg = /^[1-9]*[1-9][0-9]*$/;
//长度6-10以字母开头密码
var reg = /^[a-zA-Z]\w{5-9}$;