正则表达式(看必会系列)
Posted 工厂函数
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式(看必会系列)相关的知识,希望对你有一定的参考价值。
在开始正则学习以前,我们必须了解以下几个问题。
什么是正则表达式?
正则表达式是js中用来检索字符串中是否有匹配规则的一个对象
正则表达式是针对字符串的
正则表达式是一个js对象
正则表达式在哪里有应用
正则表达式一般用在表单里居多。比如,填写注册信息是有时会提示输入信息不合法或者首字母必须大写,必须包含数字字母下划线之类的提示信息。这里就用到了正则表达式。
如何创建正则表达式
var exeg=new RegExp("检索内容","修饰符")
var exeg=/检索内容/修饰符
如何使用正则呢?
第一种:
var exeg=new RegExp("e");
var str="hello wolrd";
//查找字符串中是否有e字符,有则返回true,没有返回false
console.log(exeg.test(str)) true
//查找字符串中是否有e字符,有则返回所在索引,无则返回-1
console.log(exeg.exec(str)) 1
//使用abc修改原有正则表达式
console.log(exeg.compile(/abc/))
第二种
var str="hello wolrd";
var exeg=/e/;
//查找字符串中是否有e字符,有则返回true,无则返回false
console.log(exeg.test(str)) true
//查找字符串中是否有e字符,有则返回所在索引,无则返回-1
console.log(exeg.exec(str)) 1
//使用abc修改原有正则表达式e
console.log(exeg.compile(/abc/))
正则表达式的基本语法
修饰符
i:忽略大小写字母
ar str="hello wolrd";
var exeg=/E/;
console.log(exeg.test(str))//false
var exeg=/E/i;
console.log(exeg.test(str))//true
g:全局查找(无论有没有,都会把字符串检索完)
ar str="hello wolrd";
var exeg=/o/;
//找到第一个o之后,后面的就不会继续了
console.log(str.match(exeg))//o
var exeg=/o/g;
//找到第一个o之后,因为you修饰符g后面的会继续执行了
console.log(str.match(exeg))//o o
m:多行匹配
元字符
^:在正则中表示以什么开头,在集合中表示除了集合之内的
$:在正则中表示以什么结尾
|:表示或的关系
.:任意字符
\:表示转译
\d:表示0-9的数字
\D:表示非数字
\w:表示单词字符
\W:非单词字符
\s:表示空白符
\S:表示非空白符
量词
{x,}
var str="heoword";
var exeg=/el{1,}o/;
console.log(exeg.test(str))//false,因为l至少出现一次
{x,y}
var str="helloword";
var exeg=/el{1,3}o/;
console.log(exeg.test(str))//false,因为l可以有1-3个+:至少匹配一次
var str="helloword";
var exeg=/el+o/;
console.log(exeg.test(str))//true,因为有连续两个ll
var exeg=/^el+o$/;
console.log(exeg.test(str))//false,因为字符串不是以e开头,*:匹配零次或者多次
var str="heoword";
var exeg=/el*o/;
console.log(exeg.test(str))//true,因为l可以不出现
var str="helloword";
var exeg=/el*o/;
console.log(exeg.test(str))//true,因为ll可以有多个?:匹配零次或者1次
var str="heoword";
var exeg=/el?o/;
console.log(exeg.test(str))//true,因为l可以不出现
var str="helloword";
var exeg=/el*o/;
console.log(exeg.test(str))//false,因为ll不可以有多个{}
{x,}
var str="heoword";
var exeg=/el{1,}o/;
console.log(exeg.test(str))//false,因为l至少出现一次
{x,y}
var str="helloword";
var exeg=/el{1,3}o/;
console.log(exeg.test(str))//false,因为l可以有1-3个分组和$n
var str="hello wolrd";
var exeg=/^hello|world$/;
console.log(exeg.test(str))//true
var exeg=/^(hello)|world)$/;
console.log(exeg.test(str))//false
var exeg=/^(\w)\s(\w))$/;
console.log(str.replace(exeg,"$2 $1"))//world hello => $1=hello $2=world
ar str=/hello\nwolrd/;
var exeg=/^w/;
console.log(exeg.test(str))//false;
var exeg=/^w/m;
//因为\n是换行符,而w字符处于第二行的开头
console.log(exeg.test(str))//true;
var exeg=/^a/;
var str="abcd";
console.log(exeg.test(str))//true
var str="babcd";
console.log(exeg.test(str))//false
----------------------------------------------------------------
var exeg=/[^abcd]/;
var str="abcde";
//字符e不在集合以内,所以符合
console.log(exeg.test(str))//true,
var str="babcd";
console.log(exeg.test(str))//false
var exeg=/a$/;
var str="abcda";
console.log(exeg.test(str))//true
var str="babcd";
console.log(exeg.test(str))//false
var exeg=/hello|wolrd/;
var str="hello word";
console.log(exeg.test(str))//true,匹配hello
var str="hell world";
console.log(exeg.test(str))//true,匹配world
var exeg=/./;
var str="hello word";
console.log(exeg.test(str))//true,
var str="1234566";
console.log(exeg.test(str))//true,
var exeg=/\./;
备注:本来.在正则中表示任意字符,但是在\的作用下,就变成了实际意义的.,不在表示任意字符
var str="helloword";
console.log(exeg.test(str))//false,因为没有点
var str="hell.world";
console.log(exeg.test(str))//true,有点
var exeg=/\d/;
var str="helloword";
console.log(exeg.test(str))//false,因为没有数字
var str="hell3world";
console.log(exeg.test(str))//true,有数字3
var exeg=/\D/;
var str="helloword";
console.log(exeg.test(str))//true,因为没有数字
var str="hell3world";
//因为除了3之外还有别的英文字符
console.log(exeg.test(str))//true,
var exeg=/\w/;
备注:单词字符包含字母,数字和下划线
var str="helloword";
console.log(exeg.test(str))//true,因为没有数字
var str="hell3world";
//因为除了3之外还有别的英文字符
console.log(exeg.test(str))//true,
var exeg=/\W/;
var str="helloword";
console.log(exeg.test(str))//false,因为没有数字
var str="hell3world";
console.log(exeg.test(str))//false,因为除了3之外还有别的英文字符
var exeg=/\s/;
var str="hello word";
console.log(exeg.test(str))//true,因为有空格
var str="hell3world";
console.log(exeg.test(str))//false,
var exeg=/\S/;
var str="helloword";
console.log(exeg.test(str))//true,因为有空格
var str="hell3world";
console.log(exeg.test(str))//true,
以上是关于正则表达式(看必会系列)的主要内容,如果未能解决你的问题,请参考以下文章