教你看懂js文件中的正则表达式(三)

Author: 陌小雨Date: 2016-09-13View: 14

这是学习js正则表达式的第三课,学习之前最好温固一下之前的课程:

教你看懂js文件中的正则表达式(一)

教你看懂js文件中的正则表达式(二)

正则表达式预算符也有优先级,正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。

相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

运算符 描述
\ 转义符
(), (:), (=), [] 圆括号和方括号
*, +, , {n}, {n,}, {n,m} 限定符
^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序)
| "或"操作
字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

使用实例:

1、javascript使用RegExp()函数

在JavaScript 1.2中带有一个功能强大的RegExp()对象,可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式,并相应的返回true或false。我们可以使用JavaScript编写以下脚本,验证用户输入的邮件地址的有效性。

<html>
<head>
 <script language="javascript1.2">
 function verifyAddress(obj) {
 var email = obj.email.value;
 var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
 flag = pattern.test(email);
 if (flag) {
 alert("Your email address is correct ! ");
 return true;
 } else {
 alert("Please try again ! ");
 return false;
 }
 }
 </script>
</head>
<body>
 <form onSubmit="return verifyAddress(this);">
 <input name="email" type="text">
 <input type="submit">
 </form>
</body>
</html>

2、PHP使用ereg()函数

PHP中可以使用ereg()函数进行模式匹配操作。ereg()函数的使用格式如下:

ereg(pattern, string)

其中,pattern代表正则表达式的模式,而string则是执行查找替换操作的目标对象。同样是验证邮件地址,使用PHP编写的程序代码如下:

<?php
if (ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+",$email)){
  echo "Your email address is correct!";
}else{
  echo "Please try again!";
}
>

定义正则表达式

定义正则表达式有两种形式,一种是普通方式,一种是构造函数方式。

(1)普通方式:var reg=/表达式/附加参数

表达式:一个字符串,代表了某种规则,其中可以使用某些特殊字符,来代表特殊的规则,后面会详细说明。

附加参数:用来扩展表达式的含义,目前主要有三个参数:

  • g:代表可以进行全局匹配。
  • i:代表不区分大小写匹配。
  • m:代表可以进行多行匹配。

上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。

例子:

var reg=/a*b/;

var reg=/abc+f/g;

(2)构造函数方式:var reg=new RegExp(“表达式”,”附加参数”);

其中“表达式”与“附加参数”的含义与上面那种定义方式中的含义相同。

例子:

var reg=new RegExp(“a*b”);

var reg=new RegExp(“abc+f”,”g”);

(3)普通方式与构造函数方式的区别

普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等:

var reg=new RegExp(document.forms[0].exprfiled.value,”g”);