js之正则表达式学习1

 我们在开发一些项目中经常会遇到正则验证,比如验证邮箱,手机号码等等,没有系统学习正则表达式前,我只能去网上找一些插件改一下代码来完成工作,但总觉得不够灵活.所以下决心认真学习正则表达式,下面会通过一些例子一起来学习.

我们通过下面这个函数来进行练习

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);

		}
              var reg=/test/;var str="testString";
	      execreg(reg,str);
 </script>

str表示为执行正则的目标字符串,执行此函数打印出的result就是匹配结果,根据测试,上述例子结果是匹配test

再看下面这个例子

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/b{1}/;
	var str="back";
	execreg(reg,str);
    </script>

上述代码匹配的结果是b.
这里用到的一个知识点就是匹配个数,{1}表示匹配一个,/b{1}/即表达匹配一个b,/b{n}/表示匹配n个b,如果将上述代码{1}改为{2},则输出null,表示匹配不成功.同理,如果改成如下代码:

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/b{2}/;
	var str="bbck";
	execreg(reg,str);
    </script>

则输出bb.

连续匹配多个还有另外一种用法,b{m,n},匹配m到n个b,如b{3,7}

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/b{3,7}/;
	var str="bbbbbbbck";
	execreg(reg,str);
    </script>

只要b的数量大于等于3个且小于等于7个都能匹配成功.
同理b{1,}表示匹配1个或1个以上的b

?的用法

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/b{3,7}/;
	var str="bbbbbbbck";
	execreg(reg,str);
    </script>

再回头看这段代码,匹配的结果是7个b,正则表达式在不给它设置任何条件时,总是会尽量多匹配结果,如果只想匹配3个b,则只需在b{3,7}后面加个?

^开头结尾$用法

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/^b{3,7}/;
	var str="bbbbbck";
	execreg(reg,str);
    </script>

^符号表示开始,本例输出了5个b,匹配成功,但如果字符串改为abbbbck则会匹配失败
同理$表式匹配末尾

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/k$/;
	var str="bbbbbck";
	execreg(reg,str);
    </script>

这段代码成功匹配了末尾字母k

/./的用法,表示匹配任意第一个字符,\n除外

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/./;
	var str="123";
	execreg(reg,str);
    </script>

输出为1,如果/../,则输出12

另外还有正则表达式最为经典用法/.*/ 表示全部匹配任意字符(除\n)

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    var reg=/.*/;
	var str="123";
	execreg(reg,str);
    </script>

输出123

二选一 b|c

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    reg = /b¦c/;
str=´back´;
execreg(reg,str);;
    </script>

输出b

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    reg = /b¦c/;
str=´cack´;
execreg(reg,str);;
    </script>

输出c

下面再看一个很有意思的例子

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    reg = /^b¦c.+/;
str=´bbs.blueidea.com´;
execreg(reg,str);
    </script>

只输出了b,/^b|c.+/表式匹配b开头或以c开头后的任意字符串,改为

<script type="text/javascript">
	function execreg(reg,str){
			var result =reg.exec(str);
			alert(result);
		}
    reg = /^(b¦c).*/;
str=´bbs.blueidea.com´;
execreg(reg,str);
    </script>

经过试验输出结果多了一个b,目前我也不知道是什么原因,好了,今天的正则表达式学习先到这里,改天有时间继续.

本文为multifeeling原创,欢迎转载,转载请注明来自multifeeling

你可能感兴趣的:(js,正则表达式,职场,前端技术,休闲)