zoukankan      html  css  js  c++  java
  • JS正则表达式的基础用法

    RegExp(正则表达式)对象

      正则表达式是一个描述字符模式的对象,可以处理更复杂的字符串。进行匹配替换。

    常用的修饰符:
    i/m/g

    使用方法:
    【声明方法一: new RegExp(value)】
    var patt = new RegExp(value);【value】中放入想要检查的值
    var res = patt.test("this is javascript course"); 检测这段话中是否存在【value】中的值,返回值为boolean类型。

    【声明方法二: var patt = /value/】
    var patt = /value/i :i表示不区分大小写


    【test()函数:检测字符串中是否存在正则表达式模式对应的匹配,返回类型为布尔类型】
    参数:string指定的字符串。
    注意:每次执行test()函数,都只查找最多一次匹配,找到返回true,否则false。

    【方括号用于查找某个范围内的值:/[value]/】
    var res =/[abc]/.test("def") 返回值:如果test("value")中的值【存在】于/[abc]/中则返回true,否则false

    【^符号表示查找不再该范围内的任何值/[^value/]】
    var res =/[^abc]/.test("def") 返回值:如果test("value")中的值【不存在】于/[abc]/中则返回true,否则false


    【元字符:它的逻辑是或逻辑,只要一个为真结果就为真】
    【查找单个字符,除了换行和行结束符:/./】
    例子:
    res = /./.test(" "); 返回false
    res = /./.test("this is a test ") 返回true

    【查找单词字符:w 小写】
    例子:
    res = /w/.test("!#@"); 返回false,因为test("value")中不包含单词字符【a-zA-Z0-9】

    【查找非单词字符:W 大写】
    例子:
    res = /W/.test("!#@abc"); 返回true,因为test("value")中包含了非单词字符,它的逻辑是或逻辑,只要一个为真结
    果就为真。

    【查找空白字符:s 】
    例子:
    res=/s/.test('hello world');


    【查找非空白字符:S 】
    例子:
    res=/S/.test(" ");

    【匹配单词边界: 单词边界指的是一个单词的左右两边,开始和结束】
    例子: 通常不要两边都写
    res = /Value/.test('good');返回true value在后面表示后面的值是否在最左边
    res = /value/.test('good');返回true value在前面表示前面的值是否在最右边

    【匹配非单词边界:B 单词边界指的是一个单词的左右两边,开始和结束】
    例子:value的值在B的左右两边无所谓
    res = /o/.test('good');返回true 因为o这个值不再test字符串的两边

    【量词 +-*/?】
    【/value+:+ 表示value中的值,匹配至少一次或多次】
    例子:
    res=/o+/.test('google');

    【/value*:* 表示value中的值,匹配>=0次】
    例子:
    res=/o*/.test('google');

    【/value?:? 表示value中的值,匹配零次或一次】
    例子:
    res=/o?/.test('google');

    【/^value/: ^ 不加方括号,表示value的值,在test中是否是第一位,是则返回true,否则返回false】
    例子:
    res=/^k/.test('ikkk'); 返回false,因为k的值不是第一位。

    【/value$/:$ 表示匹配任何结尾为value的字符串】
    例子:
    res=/i$/i.test('hai'); 返回true 因为$前面的i在test中是最后一位

    【/大写value$/:$ 表示匹配任何结尾为value的字符串,js中是区分大小写的,所以匹配不到】
    例子:
    res=/I$/i.test('hai'); 返回false 因为I是大写,test中没有I,所以返回false,可以通过i来给它变成不区分大小写

    【/value{x}/:{x} 表示匹配包含X个n的序列的字符串;它也是或逻辑 如果前面的值不匹配,后面的值匹配它一样为true】
    例子:
    res=/o(?=w)/.test('helloworld'); 返回true; 表示o后面的值等于w,就相当于/ow/,然后该值在test中是否存在。
    res=/o(?!w)/.test('helloworld'); 返回true; ?!w,相当于o的值后面有没有w,如果没有返回true,否则返回false,
    由于它是或逻辑判断,第一个o后面有w,但是第二个o后面没有w,所有它返回true

    【/d/:d 表示test中的值是否有数字】
    例子:
    res=/d/.test('aajkldsfj8');//[0-9] 返回true,只要test中存在数字它就返回true。

    【/D/:D 表示test中的值是否不存在数字】
    例子:
    res=/D/.test('sdfkjllsdfj');//[^0-9] 返回true,只要test中存在数字它就返回true。


    【exec()函数:在目标字符串中执行一次正则匹配操作,并将结果以数组的形式返回】
    参数:string指定的字符串


    【通过exec函数查找value】
    res=/Is/i.exec('this is a test');
    返回:["is", index: 2, input: "this is a test"]
    意思为检索的值为is,index2是指它开始的位置,input是指被检索的整个字符串,因为加了i所以不区分大小写
    因为它返回的是数组,可以使用res[0]来接收或显示在页面上,如果res[value]的大于上面数组的长度,它返回undefined

    【lastIndex属性:】

    定义:当正则表达式中有全局标志g,tet()函数不是从字符串的开头开始查找,而是从属性lastIndex所指定的位置出开始
    查找,属性的默认值是0,所以它第一次仍然是从字符串开头查找,当找到一个匹配的时候,test()函数会将lastIndex的值改为本次匹配内
    容的下一个的索引位置,当两次执行test()函数的时候,将会从该索引处查找,从而找到下一个匹配。
    简单来说,就是test()执行第一次匹配到值的时候,它下一次会从上一次匹配之后继续检索。

    【String通过match()函数也可以使用正则表达式】
    例子:
    var str='this is a test';
    res=str.match(/IS/i); 检索出str中的IS,i不是不区分大小写。
    返回值:["is", index: 2, input: "this is a test"]
    它返回的值是一个数组类型,和exec()函数检索值一样。

    【全局g】
    例子:
    var str='this is a test';
    res=str.match(/IS/ig); 检索出str中的IS,i不是不区分大小写,g代表全局。
    返回值:(2) ["is", "is"]
    (2)表示存在多少个is,数组形式输出["is","is"]

  • 相关阅读:
    Linux下一个patch补丁命令
    资本中国人物-金融
    深入浅出JMS(一)——JMS简要
    在JBuilder8在使用ANT
    mysql存储引擎
    Linux系统监控
    SIEM
    mysql主从数据库复制
    JVM中可生成的最大Thread数量
    磁盘IO性能监控(Linux 和 Windows)
  • 原文地址:https://www.cnblogs.com/houxiaowei/p/8270793.html
Copyright © 2011-2022 走看看