js正则表达式常用函数详解(续)(2)

//replace方法,用于替换字符串 var str ="some money"; console.log(str.replace("some","much"));//much money //replace的第一个参数可以为正则表达式 var re = /\s/;//空白字符 console.log(str.replace(re,"%"));//some%money //在不知道字符串中有多少空白字符时,正则表达式极为方便 str ="some some \tsome\t\f"; re = /\s+/; console.log(str.replace(re,"#"));//但这样只会将第一次出现的一堆空白字符替换掉 //因为一个正则表达式只能进行一次匹配,\s+匹配了第一个空格后就退出了 re = /\s+/g;//g,全局标志,将使正则表达式匹配整个字符串 console.log(str.replace(re,"@"));//some@some@some@ //另一个与之相似的是split var str = "a-bd-c"; var arr = str.split("-");//返回["a","bd","c"] //如果str是用户输入的,他可能输入a-bd-c也可能输入a bd c或a_bd_c,但不会是abdc(这样就说他输错了) str = "a_db-c";//用户以他喜欢的方式加分隔符s re=https://www.jb51.net/[^a-z]/i;//前面我们说^表示字符开始,但在[]里它表示一个负字符集 //匹配任何不在指定范围内的任意字符,这里将匹配除字母处的所有字符 arr = str.split(re);//仍返回["a","bd","c"]; //在字符串中查找时我们常用indexOf,与之对应用于正则查找的方法是search str = "My age is 18.Golden age!";//年龄不是一定的,我们用indexOf不能查找它的位置 re = /\d+/; console.log(str.search(re));//返回查找到的字符串开始下标10 //注意,因为查找本身就是出现第一次就立即返回,所以无需在search时使用g标志 //下面的代码虽然不出错,但g标志是多余的 re=https://www.jb51.net/\d+/g; console.log(str.search(re));//仍然是10 var str = "My name is CJ.Hello everyone!"; var re = /[A-Z]/;//匹配所有大写字母 var arr = str.match(re);//返回数组 console.log(arr);//数组中只会包含一个M,因为我们没有使用全局匹配 re = /[A-Z]/g; arr = str.match(re); console.log(arr);//M,C,J,H //从字符串中抽取单词 re = /\b[a-z]*\b/gi;//\b表示单词边界 str = "one two three four"; console.log(str.match(re));//one,two,three,four

案例4 RegExp对象实例的一些属性

var re = /[a-z]/i; console.log(re.source);//将[a-z]字符串输出 //请注意,直接console.log(re)会将正则表达式连同前向斜线与标志输出,这是re.toString方法定义的 var re = /[A-Z]/; //exec方法执行后,修改了re的lastIndex属性, var str = "Hello,World!!!"; var arr = re.exec(str); console.log(re.lastIndex);//0,因为没有设置全局标志 re = /[A-Z]/g; arr = re.exec(str); console.log(re.lastIndex);//1 arr = re.exec(str); console.log(re.lastIndex);//7 var re = /[A-Z]/; var str = "Hello,World!!!"; re.lastIndex = 120; var arr = re.exec(str); console.log(re.lastIndex);//0

案例5 RegExp对象的静态属性

//input 最后用于匹配的字符串(传递给test,exec方法的字符串) var re = /[A-Z]/; var str = "Hello,World!!!"; var arr = re.exec(str); console.log(RegExp.input);//Hello,World!!! re.exec("tempstr"); console.log(RegExp.input);//仍然是Hello,World!!!,因为tempstr不匹配 //lastMatch 最后匹配的字符 re = /[a-z]/g; str = "hi"; re.test(str); console.log(RegExp.lastMatch);//h re.test(str); console.log(RegExp["$&"]);//i ,$&是lastMatch的短名字,但由于它不是合法变量名,所以要。。 //lastParen 最后匹配的分组 re = /[a-z](\d+)/gi; str = "Class1 Class2 Class3"; re.test(str); console.log(RegExp.lastParen);//1 re.test(str); console.log(RegExp["$+"]);//2 //leftContext 返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符 //rigthContext 返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符 re = /[A-Z]/g; str = "123ABC456"; re.test(str); console.log(RegExp.leftContext);//123 console.log(RegExp.rightContext);//BC456 re.test(str); console.log(RegExp["$`"]);//123A console.log(RegExp["$'"]);//C456

案例6 使用RegExp构造函数注意点

var str = "\?"; console.log(str);//只会输出? var re = /\?/;//将匹配? console.log(re.test(str));//true re = new RegExp("\?");//出错,因为字符串里面\是转义字符\?相当于?要得到\?,就要\\? re = new RegExp("\\?");//正确,将匹配? console.log(re.test(str));//true 在正则表达式中使用特殊字符 //ASCII方式用十六进制数来表示特殊字符 var re = /^\x43\x4A$/;//将匹配CJ console.log(re.test("CJ"));//true //也可使用八进制方式 re = /^\103\112$/;//将匹配CJ console.log(re.test("CJ"));//true //还可以使用Unicode编码 re =https://www.jb51.net/^\u0043\u004A$/;//使用 Unicode,必须使用u开头,接着是字符编码的四位16进制表现形式 console.log(re.test("CJ"));

以上就是关于五个常用函数的简单应用,希望对大家的学习有所帮助。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjpjyg.html