JavaScript 正则表达式定义与验证方法详解

作者:木棉

时间:2026-10-27

浏览:265

本文详解JavaScript中正则表达式的两种定义方式:构造函数与字面量,重点对比两者的转义差异。深入解析用于验证的三个核心方法:test返回布尔值,exec返回匹配数组,以及字符串方法match和split的用法。通过实例演示问号等特殊字符的转义处理,帮助开发者掌握JS正则的基础应用。

文章目录

JavaScript 正则表达式定义与验证方法详解

js中的正则表达式比起C#中的正则表达式要弱很多,但基本够用了 1定义正则表达式 2关于验证的三个这则表达式方法 3正则表达式式的转义字符 1定义正则表达式 在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠。 例如

代码示例如下:

var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");

通过构造函数定义正则表达式时,需注意大小写敏感,否则可能导致无效。由于构造函数的参数是字符串形式,若使用双斜杠字面量方式定义,则无需对特殊字符进行额外的字符串转义。


使用双斜杠字面量方式定义相同的正则表达式:


代码示例如下:

var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;

代码示例如下:

var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);

上述构造函数写法与字面量方式效果相同,但仔细分析可见,构造函数方式需要更多的反斜杠进行转义处理。



2关于验证的三个正则表达式方法

正则表达式的验证方法:test、exec与match

使用正则表达式主要涉及字符串对象的match方法、正则对象自身的exec方法和test方法。


正则表达式方法test用于测试给定字符串是否符合正则规则,返回布尔值(true或false)。若仅需判断匹配与否而不需获取具体匹配内容,该方法尤为适用,常用于表单验证场景。


代码示例如下:

function test(){
var text="index.aspx?test=1&ww=2&www=3"; //
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.test(text);
if(result)
     {
alert("ok");
}else
     {
alert("err");
     }                 
      }

正则表达式方法exec同样用于测试字符串是否匹配正则,但返回的是匹配到的字符串数组;若无匹配则返回null。其功能与test基本一致,但若需获取各个子匹配串,可通过下标访问。将前述test示例改写为exec如下:


代码示例如下:

function test(){
var text="index.aspx?test=1&ww=2&www=3";
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.exec(text);
if(result)
     {
alert("ok");
alert(result); // 输出?test=1&ww=2&www=3,ww=2&
alert(result[0]+",0");// 输出?test=1&ww=2&www=3
alert(result[1]+",1");// 输出ww=2&
}else
     {
alert("err");
     }   
      }

match本质上是字符串的方法,但接收正则表达式作为参数。将上述例子改写后如下:


代码示例如下:

function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.match(re);
if(result)
         {
alert(result);// 输出?test=1&ww=234,test=1&
alert(result[0]+",0");// 输出?test=1&ww=234
alert(result[1]+",1");// 输出test=1&
}else
          {
alert("err");
         }  
      }

字符串类中还有多个方法可接收正则表达式,如split、search、replace等,但这些方法已不再适用于单纯的验证场景。


代码示例如下:

function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.split(re);
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
      }

3正则表达式式的转义字符

正则表达式中的转义字符处理

在正则表达式中常需处理转义字符。例如问号?在正则中具有特殊含义,若需匹配字面量问号?,则必须使用反斜杠\进行转义。


以下两个表达式均可匹配以问号开头的一段字符串:


代码示例如下:

function test(){
var text="?test=1&ww=2&www=3";
var re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;// \?表示匹配问号?
// var re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");// \\?表示匹配问号?
var result= re.exec(text);
if(result)
     {
alert("ok");
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}else
     {
alert("err");
     }   
      }

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章