js正则表达式

139 阅读1分钟

正则表达式

1.基本符号

    /* 构造函数方式 */
     let reg = new RegExp([/[a-z]/]); 
    /* 正则的方法test() 可以判断你输入的字符串是否复合要求
    复合就返回true 不符合就返回false */
    /* console.log(reg); */

    /* let reg = /[a-z]/;
    console.log(reg.test('C')); 返回值false */

    /* 用字面量的方式来表示正则 */
    /* let reg = /[a-z]/ */
    /* let obj = new Object({a:1}); */

    let str = 'abc1a2c3b';
    console.log( str.match(/a/g) );

    //i表示大小写不敏感
    let reg = /[a-z]/i;
    console.log(reg.test('A'));//true

2.简单匹配符号及解释

    <script>
    //  表示大写的A-Z 
    //   /[a-zA-Z]/表示大小写都匹配
    //   /[0-9]/ 找查任何从09的数字
    //  /[0-9a-zA-Z]/ 表示0-926个大小写字母都匹配
    //   []表示只要有一个符合都返回true
    //   [^]写在里面叫除了 ^[]写在外面叫做以什么开头
    //  []$ 表示以什么结尾
    //  + 表示匹配前面的字符串匹配一次或者多次
    //   ^[a-z]+$ 表示纯26个英文小写的字母  

    /*  let reg;
    reg = /[abc]$/;
    console.log(reg.test('a1')); */


    /* 匹配一串字符 包括多个英文字母 包括大小写和数字 */
    /* let  reg = /^[a-z0-9]+$/i;
    console.log(reg.test('A')); */


    /* 用户名 字母长度不能小于6位 不能大于10位 可以接受数字  */
    /* let reg = /^[a-zA-Z0-9]{6,10}$/ ; */
    // * 表示匹配前面的子表达式零次或多次/[a-z]/* 字母出现与否都为true
    /* ? 表示匹配前面的子表达式零次或一次 /[a-z]/? 字母出现01次都为true */

    /* 要加限定字符不然 一直都是true */
    /* {n,} 表示至少匹配n次  /^[a-z]{6,10}$/   */
</script> -->

3.\w和\W

<!-- \w 匹配数字、字母、下划线 这些元字符注意区分大小写-->
<!-- \W 匹配非数字、字母、下划线 这些元字符注意区分大小写-->
<script>
    let reg = /^[\w]+$/;
    console.log(reg.test('_asdasd'));
</script>

4.\d和\D

<!-- \d 匹配数字 -->
<!-- \D 匹配非数字 -->
<!-- <script>
    let reg = /^[\D]+$/;
    console.log(reg.test('_asdasd'));
</script> -->

5.\s和\S

<!-- \s 匹配空白字符(空格、换行\n、回车\r) -->
<!-- \S 匹配非空白字符(空格、换行\n、回车\r) -->
<!-- <script>
    let reg = /^[\s]+$/;
    console.log(reg.test('_asdasd'));//true
</script> -->

6.\n匹配换行符

String支持正则的属性

test表示:符合返回true 不符合返回false 用法:

    let reg = /[a-z]/;
    console.log(reg.test('C'))

exec表示:符合返回一个数组,不符合返回null 用法:

let reg = /^[a-z]+$/g
console.log(reg.exec('abc'));

search表示:返回匹配到的第一个字符串下标,否则返回-1 用法:

let str = 'abc';
   console.log(str.search(/[a-z]/)); 
   

match表示:如果没有找到任何匹配的文本,返回null,否则它返回一个数组(依赖于是否具有全局标志g) 用法:

let str = 'abc123qwe';
   console.log(str.match(/[0-9]/g)); //123
   

replace表示:返回一个新的字符串 用法:

 let str = 'abc123qwe';
    let newStr = str.repeat(/[0-9]/g,'oo');
    console.log(newStr);
    

split表示:用正则表达一个分隔符,第二个参数表示分割成几个数组的意思 用法:

 <script>
   let str = 'a1b2c3d';
   console.log(str.split(/[0-9]/));//(4) ['a', 'b', 'c', 'd']
</script>
 
 

练习

  1. 验证26个字母 组成的字符串
  2. 验证由数字和26个字母组成的字符串
  3. 验证由数字、字母、下划线组成的字符串
  4. 验证由汉字\u4e00-\u9fa5 以数组的形式打印在控制台

答案:

<script>
    let a = 'asdasdasf'
    console.log(a.match(/[a-z]/g));
    let b = 'asd121d3as';
    console.log(b.match(/[0-9a-z]/g));
    let c= '123asd__';
    console.log(c.match(/[\w]/g));
    let d = '我超神了';
    console.log(d.match(/^[\u4e00-\u9fa5]+$/g));
</script>