正则表达式作用:用来过滤指定规则的字符的一种方法,比较便捷。
在js中定义正则表达式中,正则表达式都是在//g中定义的,表示的是g表示的是全局的。
而双斜杠//,就是使用字面量表达式的方式。两者并没有本质不同。就像声明一个数组,我们既可以用new Array() 又可以 使用一对中括号[]的方式。用字面量的方式有一个方便之处在于。不需要转移反斜杠字符了。因为在字符串中两个反斜杠代表一个反斜杠。
正则表达式的语法:
注:如果要匹配字符的本身,需要使用转移字符加被匹配的字符,如:\$;
非打印字符:
1.\cx: 匹配由x指明的控制字符。例如, \cM 匹配一个 ctrl-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符;
2. \f: 匹配一个换页符;
3. \n: 匹配一个换行符;
4. \r: 匹配一个回车符;
5. \s: 匹配空白字符,如空格,制表符;
6. \S: 匹配任何非空白字符;
7. \t: 匹配一个制表符;
8. \v: 匹配一个垂直制表符;
9. \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。
10.\d 匹配数字
特殊字符:
1. $: 匹配字符串的结尾位置;
2. (): 标记一个子表达式的开始和结束为止;
3. *: 匹配前面子表达式零次或多次;
4. +: 匹配前面子表达式一次或多次;
5. .: 匹配除换行符\n之外的任何单字符;
6. [: 匹配一个中括号表达式的开始;
7. ?: 匹配前面子表达式零次或一次;
8. ^: 匹配输入字符串的开始;
9. {: 标记限定符表达式的开始;
10.|: 指明两项之间的一个选择;
限定符:
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
其中*,+,?具体在特殊字符中已经介绍;
1. {n}: n 是一个非负整数。匹配确定的 n 次;
2. {n,}:n是一个非负整数,至少匹配n次;
3. {n,m}: (n<=m)至少匹配n次,至多匹配m次;
定位符:
定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界。
正则表达式的一般使用:
匹配汉字:^[\u4e00-\u9fa5]{0,}$,其中^表示开始字符,$表示结束字符;
匹配Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
如:在js中测试一个所输入的字符里面是否含有中文:
var reName = /[\u4e00-\u9fa5]/g表述的是将输入字符串中的中文找出来;
使用test()方法即可用来测试,是否符合条件;
如果reName.test(str)的值为true,则表示str中含有汉字,如果为false,则表述str没有含有汉字;
若要验证,该字符串中是否只含有字母和数字,则需要使用,replace()和判断过滤后的长度是否为0的方式来进行判断;
如:var reName= /[a-zA-Z0-9]/g,表示的是只寻找字母和数字,每次只匹配一个字母或者数字,然后进行下一个字符;如果使用/[a-zA-Z0-9]+/g则表示每次可以匹配多个字母或者数字,只要是字母或者数字即可;
str = str.replace(reName,"");用空格代替正则表达式匹配的内容;
然后,判断str的长度是否为零即可;
总结:
目前,用正则表达式进行处理,是否符合条件的一种方式:就是,找出符合条件的,然后用""代替符合条件的,判断剩余的字符串的长度是否为0来进行判断所输入的是否符合条件;该方式也可用于对于表达式的验证,只是逻辑较为复杂,需要把逻辑理清之后,再下手,还有就是需要考虑去空格的操作;