正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
规则:
1 元字符
. 匹配任何单个字符,除了换行
d 数字 \D 非数字 [0-9] w 数字 字母 下划线 \W 非 [0-9a-zA-Z_] \s 空白 \S 非空白
\n 换行
\t 制表符
2 范围-- 匹配的是一个字符 [0-9][0123][a-z][A-Z] 匹配的是一个字符
3 | 或者 | 或者
4 量词 -只修饰一个字符
a+ 1个或多个a
a? 1个或0个a
a* 0个或多个a
a{x} x个n
a{x,} 至少x个a
a{x,y} x-y个a
5 开始结束
^a 以a开始
a$ 以a结束
6 ( ) 看成是一个整体,即分组
7 匹配汉字 [\u4e00-\u9fa5]8 参数
i 忽略大小写
g 全局匹配
9 ^在[ ]中的作用——取反
10 贪婪模式和非贪婪模式
默认情况 贪婪模式 <.+>
非贪婪模式 <.+?>
8.1 正则表达式对象RegExp
<body> <a href="https://www.baidu.com">百度</a> <script> // var regularExpression = new RegExp("\\d"); //第一种写法 var regularExpression = /\d/; //第二种写法 var str = "adfj23dald"; console.log(regularExpression.test(str)); //test就是匹配方法,结果是true </script> </body>
8.2 正则之匹配
例:验证电子邮箱
//验证电子邮箱 // abc@sohu.com // 11111@qq.com // aaaaa@163.com // abc@sina.com.cn var reg = /^\w+@\w+\.\w+(\.\w+)?$/; var str = "abc@sina.com.cn"; console.log(reg.test(str));
8.3 正则之提取
例:找数字
var str = "张三: 1000,李四:5000,王五:8000。"; var reg = /\d+/g; //默认情况下,找到第一个匹配的结果就返回,后面加个g,就是全局找 var arr = str.match(reg); console.log(arr);
8.4 正则之替换
例:所有的逗号替换成句号
var str = "abc,efg,123,abc,123,a"; str = str.replace(/,/g,"."); console.log(str);
8.5 正则的分组( )
在正则表达式中用( )把要分到一组的内容括起来,组分别是RegExp.$1 RegExp.$2等等
例:交换位置 源字符串"5=a, 6=b, 7=c" 要的结果"a=5, b=6, c=7"
var str = "5=a, 6=b, 7=c"; str = str.replace(/(\d+)=(\w+)/g, "$2=$1"); console.log(str);
9.键盘事件对象[b][/b]
方法
keydown 按下时
keypress 按下
keyup 抬起时
属性
keyCode 键盘码,只有数字和字母对应ASCII码
charCode 对应ASCII码,只有在keypress中才生效(IE9+)
例:在切换鼠标焦点时,用enter键代替tab键
<body> <input type="text"><input type="text"><input type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text"> <script> var inputs = document.body.getElementsByTagName("input"); for(var i = 0, length = inputs.length; i < length ; i++) { var input = inputs[i]; //回车键的keyCode是13 if(input.type === "text") { //按下回车,让下一个文本框获得焦点 input.onkeydown = function (e) { if(e.keyCode === 13) { this.nextElementSibling.focus();//focus() 他触发了onfocus事件 } } } } </script> </body>
补充:js中的instanceof运算符介绍
判断某个变量是不是某种类型的对象
var num = 5; var arr = []; console.log(num instanceof Array); //false console.log(arr instanceof Array); //true