世上无难事,只怕有心人。加油陌生人
正则表达式含义:对一个字符串判断是否有这个特定的字或单词字母,也叫搜索模式
/pattern/modifiers;
1,创建基础的正则表达式
下面有两种创建基础正则表达式一个是通过RegExp对象来创建实际跟字面量(通过变量声明/pattern/modifiers)的声明方式相同,一个是通过变量来声明看下面实例
<body>
<script>
function 函数名(也可通俗理解为方法名)(){
//1.RegExp是一个对象直接用它就相当于用正则表达式
var re = new RegExp();
//最简单的正则表达式,将要搜索的内容输入下面方法内
re =new RegExp("要查找的内容");
//第一个参数是要查找的内容,第二个参数,表示搜索时不分大小写
re=new RegExp("a","i");
//在第二个参数也可以加参数,m什么意思看下面
re=new RegExp("a","im");
//下面是通过变量来声明
var re = /a/gi;
//上面的也就是等于
re=new RegExp("a","gi");
}
</script>
</body>
在上面的第二个参数还有几个常见的用法:
i (忽略大小写)m (多行查找)g (全文查找)
2.正则表达式的一些方法(看不懂的先看下面代码在回过头来看文字这一部分)
•test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。
•exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
•compile,把正则表达式编译为内部格式,从而执行得更快。
正则表达式对象的属性
•source,返回正则表达式模式的文本的复本。只读。
•lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
•1…1…9,返回九个在模式匹配期间找到的、最近保存的部分。只读。
•input (),返回执行规范表述查找的字符串。只读。∙lastMatch(),返回执行规范表述查找的字符串。只读。•lastMatch(&),返回任何正则表达式搜索过程中的最后匹配的字符。只读。
•lastParen (+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。∙leftContext(+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。•leftContext(`),返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。
•rightContext ($’),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。
String对象一些和正则表达式相关的方法
•match,找到一个或多个正则表达式的匹配。
•replace,替换与正则表达式匹配的子串。
•search,检索与正则表达式相匹配的值。
•split,把字符串分割为字符串数组。
//先是下面的test方法,测试字符串,符合有搜索的字符时返回布尔值
//上面最简单的正则表达式声明下面声明找he字符
var re = /he/;
var str = "she";
//下面会返回true因为test找到了str为he的值,alert是弹出框
alert(re.test(str));
//下面加上了不分大小写的参数
re = /he/i;
//下面会返回true
alert(re.test(str));
//^是代表字符开始位置必须为he但后面加了i就是查找的字符串开头
//必须是he或者Hz开头的,^代表开头字母
re = /^he/i;
//false,因为he不在str最开始
alert(re.test(str));
//下面把str的值重新赋值
str = "He is a good boy!";
//下面会返回true因为开头是he
alert(re.test(str));
//$表示字符结束位置必须是前面加的条件
re = /^he$/i;
//下面会返回false因为开头是he符合条件但结尾不符合条件
alert(re.test(str));
//仔细看下面的代码,\s的意思是查找非空的字符--也就是空格的意思相同的
//还有\d表示数字下面要用到哦
re = /\s/;
str= "hhhh lllll";
//现在我们来运行会返回true
alert(re.test(str));
//[a-z]匹配指定范围内的任意字符,这里将匹
//配英文字母,因为后面加i所以不区分大小写 ,同时变量名必须以字母开头
re=/^[a-z]/i;
//现在重新给值给str
str="variableName";
//会返回true
alert(re.test(str));
//现在我们改变值了开头是下滑线不是字母所以会返回false
str="_abc";
alert(re.test(str));//false
//最后一个你先不看我最后注释能看懂那恭喜你了你学习到了正则表达式的
//最基础的想要升级向下看
var a = "abcdefg 1314";
var re = /^[a-z]+\s+\d+$/i; //+号表示字符至少要出现1次,\s表示空白字符,\d表示一个数字 ,下面返回ture
alert(re.test(a));
上面的全是用test返回布尔值那么我要返回内容怎么返回看下面exec方法
exec方法会返回一个数组那么我们现在就要用变量保存它
var a="abcdefg520"
//下面我想取出字母但不带数字怎么办
var b=/^[a-z]+/
//下面是拿到a中不带数字的值放入到arr数组中
var arr = b.exec(a);
for(int i=0;i<arr.lenth;i++){
document.write(arr[i] + "<br>");
}
//上面就会输出所有字母了,但如果存在找不到字母的情况就会给你个null
下面写两个操作string的方法replace(代替)与search (查找)方法(这两个部分用的比较多)
//replace(代替)方法,用于替换字符串
var str=/[a-z]+/
var a="hello 12yue 30ri"
//下面会返回nihao 12yue 30ri,
alert(str.replace("hello","nihao"));
//学会举一反三如果我想找空格怎么写呢?
var b=/\s+/
//下面会输出nihao*12yue30 ri,记住只它找了第一次出现的空格
alert(str.replace(b,"*"))
//改进上面的例子
var c=/\s+/gi
alert(str.replace(c,"*"))//这样才会把所有的空格拿到
//上面的会输出nihao*12yue*30ri
//下面我们看查找search方法
var text="hell2019"
var text1=/\d+/i
//下面的将会返回2在哪一个位置开始
alert(text.search(text1));
//search方法在没找到值时会返回-1给你
笔者先写到这里明天继续更新剩下的贪性匹配,惰性匹配等好玩的,学校实在太冷了,手好冷emmmm…