千万别把js的正则表达式方法和字符串方法搞混淆了
我们在字符串操作过程中肯定经常用了test() split() replace() match() indexof()等方法,很多人经常把用法写错了,包括我,所以今天细细的整理了下。
test()是判断是字符串是否与正则表达式匹配,返回true | false;
//例1 现在有个要求,判断字符串是不是数字
var reg=/^\d$/; //匹配数字正则
var str="123"; //一个字符串
//是这样写呢
reg.test(str);
//还是这样写叱
str.test(str); //例2 现在又有一个要求,替换字符串中所有的数字
var reg=/\d/g; //匹配所有数字正则
var str="AAAA00000BBBBB11111CCCCCC";
//问题又来了,是这样写呢还是这样写
reg.replace(str,"");
str.replace(reg,"");
同学们千万别死记硬背,容易伤身体,只要我们搞清楚了这样正则表方法就很容易掌握用法
这些方法分为两类,一类是正则表达式方法,另一类是字符串方法
正则表达式方法这样调用:reg.方法(字符串);
字符串方法这样调用 :字符串.方法(reg);
具体的分类往下看吧……
一、正则表达式的定义
1、var reg=//参数;
2、var reg=new RegExp("","参数")
二、正则表达式的常用方法,方法分两种一种正则表达式自定的方法和字符串操作方法
1、RegExp对象方法
1.1、test():返回字符串是否与Reg匹配。
例:
var reg=/\d/;
var str1="123";
var str2="ABC";
reg.test(str1);//true
reg.test(str2);//false
1.2、exec():返回字符串中与reg首次匹配的值
var reg=/\d/;
var str1="923ABC";
reg.exec(str1);//9
1.3、compile():用于改变RegExp
var reg=/\d/;
var str1="923";
console.log(reg.test(str1));//true
reg.compile("\w");
console.log(reg.test(str1));//false
2、字符串操支持正则表达式的方法
2.1、replace():替换reg匹配字符串
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD
//用--替换字符串中数字,但结果发现却只替换掉了第一个,因为reg默认匹配第个
//那么要替换所有的数字,需要在reg后面加个全部的参数 g
var reg=/\d/g;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD
2.2、split():按reg匹配的值拆分成数组
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.split(reg));//["AAA", "BBBB", "CCCC", "DDDD"]
2.3、match():返回reg匹配的第个字符串
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.match(reg));//"9" 返回第一个数字"9"
2.4、search():返回reg匹配的第一个字符串的位置,没有则返回-1
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.search(reg)); //3 返回第个数字 9的位置
3、很多人容易把以上两个方法顺序写反。
正则方法的调用是:reg.方法(字符串);
字符串方法的调用:字符串.方法(reg);
三、参数:
g :全文查找
var reg=/\d/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD
//用--替换字符串中数字,但结果发现却只替换掉了第一个,因为reg默认匹配第个
//那么要替换所有的数字,需要在reg后面加个全部的参数 g
var reg=/\d/g;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD
i :忽略大小写
var reg = /a/i;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--")); // AAA9BBBB2CCCC3DDDD var reg = /a/;
var str1 = "AAA9BBBB2CCCC3DDDD";
console.log(str1.replace(reg,"--")); //--AA9BBBB2CCCC3DDDD
m:多行查找
这个有点不好理解,多行查找和全文查找有什么区别呢。我们来举个例子看看
//例:全文查找 替换所有的A
var reg = /A/g;
var str1 = "AAA9BBBB2CCCCAAAA3DDDD";
console.log(str1.replace(reg,"-")); // ---9BBBB2CCCC----3DDDD
//例:多行查找
var reg = /A/m;
var str1 = "AAA9BBBB2CCCCAAAA3DDDD";
console.log(str1.replace(reg,"-")); // -AA9BBBB2CCCCAAAA3DDDD //多行查找一般用于有换行的字符中
var reg = /^A/;
var str1 = "BBBB9BBBB2CCCC\r\nAAAA3DDDD";
console.log(str1.replace(reg,"-"));
//BBBB9BBBB2CCCC
//AAAA3DDDD
//字符串里有个换行符当正则匹配第一行后就结束了,所以这里就引用了换符符的功能
var reg = /^A/m;
var str1 = "BBBB9BBBB2CCCC\r\nAAAA3DDDD";
console.log(str1.replace(reg,"-"));
//BBBB9BBBB2CCCC
//-AAA3DDDD
//全文查找的范围大于多行查找
千万别把js的正则表达式方法和字符串方法搞混淆了的更多相关文章
- js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression)
js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression) 一.总结 1.str_replace:正则作用:高效快速匹配 2.break ...
- JavaScript易混淆知识点小回顾--数组方法与字符串方法;
数组属性: arr.length;查看数组的长度 arr.Pop;删除数组最后一个元素; 数组的方法: arr.push();添加到数组末端; arr.shift();删除数组的第一个元素; arr. ...
- python——元组方法及字符串方法
元组方法 Tup.count():计算元组中指定元素出现的次数 Tup.count('c') Tup.index():在元组中从左到右查找指定元素,找到第一个就返回该元素的索引值 Tup.index( ...
- js 中一些重要的字符串方法
String 对象方法 方法 描述 charAt() 返回在指定位置的字符. charCodeAt() 返回在指定的位置的字符的 Unicode 编码. concat() 连接两个或更多字符串,并返回 ...
- js 的正则表达式 部分展示test()方法的验证功能
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- JavaScript中数组的方法和字符串方法总结
数组是首先的一个对象, 可以通过Array构造器创建一个数组,数组方法总结如下 cacat() 链接两个数组 join() 将数组链接成字符串 pop() 删除最后一个元素 shift() 删 ...
- 20个常用的JavaScript字符串方法
摘要: 玩转JS字符串. 原文:JS 前20个常用字符串方法及使用方式 译者:前端小智 Fundebug经授权转载,版权归原作者所有. 本文主要介绍一些最常用的JS字符串函数. 1. charAt(x ...
- js正则表达式test方法、exec方法与字符串search方法区别
1.正则表达式test方法 test() 方法用于检测一个字符串是否匹配某个模式 返回值: 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 fal ...
- Js用正则表达式验证字符串
js 常用正则表达式表单验证代码 作者: 字体:[增加 减小] 类型:转载 js 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...
随机推荐
- Linux资源控制-CPU和内存【转】
转自:http://www.cnblogs.com/wang_yb/p/3942208.html 主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法. CPU资源控制 每个进 ...
- js 去空格函数与正则
如果项目没有用到jQuery等框架的话,js本身又没有这样的函数,我们不得不自己写这样的函数,下面是函数的具体实现: //供使用者调用 function trim(s){ return trimRig ...
- Maven —— 如何设置HTTP代理
公司需要设置代理才能上网,而运行Maven时需要下载依赖的库. 怎么办呢? 原来Maven也像IE一样,可以设置代理的. 步骤如下: ·编辑 ~/.m2/setting.xml 文件.如果该目录下没有 ...
- ZOJ Problem Set - 3861 Valid Pattern Lock(dfs)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3861 这道题当时没做出来,后来经过队友提醒才做出来. 3*3的九宫格,给你 ...
- cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构
郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
- 无锁编程(一) - Double-checked Locking
Double-checked Locking,严格意义上来讲不属于无锁范畴,无论什么时候当临界区中的代码仅仅需要加锁一次,同时当其获取锁的时候必须是线程安全的,此时就可以利用 Double-che ...
- Java好文统计( 引用 )
1. java 关于类的路径及编译问题 windows 版本:http://www.ibm.com/developerworks/cn/java/j-classpath-windows/ unix & ...
- URAL1748. The Most Complex Number
1748 反素数 素数的个数随大小的递增而递减 可以相同 注意各种超啊 #include <iostream> #include<cstdio> #include<cst ...
- UVa 11093 Just Finish it up
从第一个加油站开始枚举起点,如果到第i个加油站油量不够的话,那么1~i个加油站都不可能是起点. 将第i+1个加油站作为起点继续枚举. 比如说,第一个加油站开始最多跑到第5个加油站,那么第二个加油站不可 ...
- vim 常用命令总结
https://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/ 1 文档开头末尾 [[ 开头 ]]末尾 2 删除全部 :%d 3 剪切.复制.粘贴 ...