正则表达式

174 阅读2分钟

1. 正则表达式书写方式

//1.利用RegExp对象来创建正则表达式!!!
var regexp = new RegExp(/abc/);
//2.利用字面量创建正则表达式
var rg = /abcd/;
//使用正则表达式
 // test进行搜索,搜索abc,里面是否包含(abc)
console.log(regexp.test('abc'))//true
console.log(rg.test('a'))//false
console.log(rg.test('abcd'))//true

2.边界符

边界符   ^  以..为开头
边界符号 $  以..结束
    // 边界符  ^ 
    // var reg = /^abc/
    // console.log(reg.test('abc'));  // true
    // console.log(reg.test('abcd')); // true
    // console.log(reg.test('dabc')) // false
    // console.log(reg.test('aabc'));  // false

    // 边界符号 $
    var reg1 = /abc$/;
    console.log(reg1.test('abcd')) // false
    console.log(reg1.test('abc')) // true
    console.log(reg1.test('abcc')) // false

3.字符类

[] 例如:/[abc]/   只要包含a 或者 包含b 或者包含c,都会返回true
        /^[abc]$/ 有且只有一个 a 或者 b 或者 c ;
        
^[a-z]$ 只能是26个英文字母中某一个字母,并且是小写,才能返回true

^[a-zA-Z0-9_-]$ 26个大小写英文字母,数字,_- 中某一个 才能返回true

// 需要特别注意,如果^符号写到了[],就是取反的意思,已经不是在以。。。开头的意思了!!!
        // [abc] 只要包含a或者b或者c 就为true
        // var reg1 = /[abc]/;
        // console.log(reg1.test('a'))//true
        // console.log(reg1.test('b'))//true
        // console.log(reg1.test('c'))//true
        // console.log(reg1.test('abc'))//true
        // console.log(reg1.test('apply'))//true
        // console.log(reg1.test('boy'))//true
        // console.log(reg1.test('baby'))//true
        // console.log(reg1.test('content'))//true

        // ^[abc]$ 有且只有一个 a 或者 b 或者 c ;
        // var reg2 = /^[abc]$/
        // console.log(reg2.test('a'))//true
        // console.log(reg2.test('b'))//true
        // console.log(reg2.test('c'))//true
        // console.log(reg2.test('aa'))//false
        // console.log(reg2.test('abc'))//false
        // console.log(reg2.test('aaa'))//false
        
        // ^[a-z]$ 只能是26个英文字母中某一个字母,并且是小写,才能返回true
        // var reg3 = /^[a-z]$/;
        // console.log(reg3.test('a'))//true
        // console.log(reg3.test('d'))//true
        // console.log(reg3.test(1))//false
        // console.log(reg3.test('A'))//false

        // ^[a-zA-Z0-9_-]$ 26个大小写英文字母,数字,_- 中某一个 才能返回true
        // var reg4 = /^[a-zA-Z0-9_-]$/
        // console.log(reg4.test('_'))//true
        // console.log(reg4.test('B'))//true
        // console.log(reg4.test(9))//true
        // console.log(reg4.test('$'))//false
        // console.log(reg4.test('BCD'))//false
        // console.log(reg4.test('z'))//true

        // 需要特别注意,如果^符号写到了[],就是取反的意思,已经不是在以。。。开头的意思了!!!
        var reg2 = /^[^a-zA-Z0-9_-]$/ // 26个大小写英文字母,数字,_-。。需要
        console.log(reg2.test('a'))
        console.log(reg2.test('A'))
        console.log(reg2.test(8))
        console.log(reg2.test('-')) // 
        console.log(reg2.test('!')) // true

4.量词

*      /^a*$/  可以出现0次或者出现多次!!!
+      /^a+$/  可以出现1次或者多次!!!
?     /^a?$/   匹配到有一次或者0次!!!
{n}    /^a{3}$/  就是重复了3次
{n,}   /^a{3,}$/ 大于等于3
{n,m} /^a{3,16}$/ 大于等于3 并且 小于等于16
runoo+b,可以匹配 runoob、runooob、runoooooob 等,
+号代表前面的字符必须至少出现一次(1次或多次)。

runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表字符可以不出现,
也可以出现一次或者多次(0次、或1次、或多次)。

colou?r 可以匹配 color 或者 colour,
? 问号代表前面的字符最多只可以出现一次(0次、或1次)。

{n}	n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的
'o',但是能匹配 "food" 中的两个 o。


{n,}	n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的
'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'。


{n,m}	m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m次。
例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。
请注意在逗号和两个数之间不能有空格。