千万别把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 常用正则表达式表单验证代码,以后大家就可以直接使用了. 正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模 ...
随机推荐
- javascript ajax的语法
ajax参数: 详细参数转到如下地址: http://www.w3school.com.cn/jquery/ajax_ajax.asp $.ajax语法: jQuery.ajax([settings] ...
- oracle数据库sql的基本使用
整理了下关于oracle数据库中SQL的基本使用语句,整理如下,方便记忆. oracle的基本术语 数据字典,数据库元数据信息的数据字典表和用户可以读取的数据字典视图组成.存放oracle数据库所用的 ...
- JavaScript —— 如何判断一个非数字输入
在页面里,如何用JS去判断一个用户输入是不是一个数字. 你是不是首先想到了正则表达式? JS里有个现成的函数,isNaN(x) isNaN(x) 函数可用于判断其参数是否是 NaN(Not a Num ...
- cdev、udev
udev :应用层的守护进程,由启动脚本加载,负责建立热拨插的接点 cdev :建立字符设备接口 platform device :相关平台直接总线建立的设备,主要出现需要自己直接挂到平台的时候,因为 ...
- Linux Java 环境变量设置
对整个机器:所有用户 1,在/etc/profile 文件末尾加入 export JAVA_HOME=/var/opt/jdk1.7.0_04 export PATH=$JAVA_HOME/bin:$ ...
- 用Eclipse+ADT创建可运行项目,创建lib项目,引用一个lib项目
Managing Projects from Eclipse with ADT In this document Creating an Android Project 创建可运行项目 Settin ...
- mysql 字符串函数
对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL,返回NULL. mysq ...
- Codeforces Round #320 (Div. 2) D. "Or" Game 数学
D. "Or" Game time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- IBatis.Net 批量插入数据
利用了iterate标签来做的: 先看iterate标签几个属性的: prepend-加在open指定的符号之前的符号,添加在语句的前面(可选) property-类型为ArrayList的用于遍历的 ...
- CSS 滤镜(IE浏览器专属其他浏览器不支持)
Filter 属性介绍: 设置或检索对象所应用的滤镜或滤镜集合.此属性仅作用于有布局的对象,如块对象.内联要素要使用该属性,必须先设定对象的 height 或 width 属性,或者设定 positi ...