千万别把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 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...
随机推荐
- 解决Android开发中,ActiveAndroid和Gson同时使用,对象序列化失败的问题
ActiveAndroid是安卓开发常用的ORM框架. Gson则是Google提供的轻量级序列化框架,非常适合Android开发使用. 但这两者同时使用,会产生序列化失败的问题.你通常会收到如下信息 ...
- How to fix broken packages?(转)
Try Code: sudo apt-get update to update your package list.Then Code: sudo apt-get autoclean to clean ...
- javaScript初学者易错点
大家好,这是我在博客园写的第一篇博文.作为一名前端开发初学者,由于经验不足,水平有限,在做项目的过程中总会遇到这样或那样的问题,每每这时候,我都比较喜欢到博客园这里来寻求解决方案,结果也总是能找到满意 ...
- 利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml
来源:http://blog.csdn.net/zx13525079024/article/details/25310781 solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括 ...
- python实现简单kNN
注释写得很清楚了,熟悉了一下python的一些基本语法和numpy中的一些操作. from numpy import * import operator def createDataSet(): # ...
- CentOS 安装 mono
1. 安装EPEL 2. 安装软件包 yum install bison gettext glib2 freetype fontconfig libpng libpng-devel libX11 li ...
- C#处理文件流的转换
//----引入必要的命名空间 using System.IO; using System.Drawing.Imaging; //----代码部分----// private byte[] photo ...
- Asp.Net生命周期系列四
上回我们说的当一个Http请求来到HttpModule这里的时候,Asp.Net内部并未对这个Http请求做出任何的处理,我们可以对这个Http请求添加一些我们需要的信息,以方便我们控制这个Http请 ...
- DNS为什么通常都会设置为14.114.114.114
114DNS以多个基础电信运营商自用的DNS系统为基础,通过扩展而建成专业的第三方高可靠DNS服务平台,该平台由几百个Intel的高端CPU内核构成,有多条10GE和GE电路直连多个基础电信运营商的核 ...
- jQuery中filter(),not(),split()的用法
filter(),not(): <script type="text/javascript"> $(document).ready(function() { //输出 ...