`

正确理解--javascript中的正则表达式-您有多少误区?和表单验证

阅读更多

一、字符串的match()方法--正确理解

 

1、在javascript中,字符串可以调用match()方法来匹配字符串。

误区1:这里的match()方法和java中的matches()方法时完全不同的。

在java中是完全匹配,也就是匹配的字符串必须是整个都满足正则表达式。

但是:javascript中的match()是匹配子串,也就是该字符中,有满足正则表达式的就可以。

看代码:

<html>
<head>
<title>正则表达式</title>
<meta http-equiv="content-type" content="charset=gbk">
<script type="text/javascript">
var srt="1234562347";
var s=srt.match('234');
//如果整个匹配就不满足,但是匹配字串就满足
document.write(s);
</script>
</head>

<body>
</body>
</html>

 误区2:match()返回的是存放匹配结果的数组,而不是字符串,该数组元素就是匹配的子串,匹配到的话大小就为1

  var s=srt.match('234');

s是数组,打印他的长度可以知道是1,注意,如果我们直接输出一个数组,也是可以的他会将里面的元素用

,隔开,当只有一个元素的时候也就是没有,了。

注意:虽然它是匹配字串,但是他也是懒惰的,只会返回第一个匹配的字符串,

          我们可以通过查看数组的大小和元素来验证,下面的代码中,字符串有两个子字符串满足,但是返回的数组长度还是1。

看代码:

<html>
<head>
<title>正则表达式</title>
<meta http-equiv="content-type" content="charset=gbk">
<script type="text/javascript">
var srt="1234234567";
var s=srt.match('234');
//如果整个匹配就不满足,但是匹配字串就满足
document.write(s.length+"<br/>");
document.write(s+"<br/>");

</script>
</head>

<body>
</body>

误区3、表单验证

有了上面的理解,我们在做表单验证的时候,需要匹配整个字符串是不是满足?但是我们又没有整个匹配的方法,注意javascript没有提供全局匹配的方法。

我们得到匹配的子符串,这个时候拿来和原来的整个字符串比较,如果是相等,那么就满足,这里需要注意返回的变量是个数组,如果去比较返回值的长度和原来字符串的长度是不合理的。 

 

如果我们要得到所有满足的子串怎么办呢?下面介绍正则表达式对象。

 

二、正则表达式对象。

1、对象实例化的语法。

new RegExp(pattern, attributes);

参数

 

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

 

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

 

返回值

 

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

 

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

 

 

2、方法

方法 描述    
compile 编译正则表达式。    
exec 检索字符串中指定的值。返回找到的值,并确定其位置。    
test 检索字符串中指定的值。返回 true 或 false。    

 

主要介绍exec()方法误区:

其实这里的 exec()  方法和上面将的match()方法他的执行是一样的,也是懒惰的也只会执行一次,返回值

也是一个数组。

特点: RegExpObject 的 lastIndex 属性

正则表达式对象有lastIndex 属性,他保留了匹配到的字符串在它原来自己字符串中的位置,当这个正则表达式对象再一次调用exec() 方法的时候,该方法就会从这个位置之后去查找,如果没有匹配的就会返回null

 

解决问题:现在就可以得到所有满足的子串了。

看代码:

<html>
<head>
<meta http-equiv="content-type" content="charset=gbk">
<title>正则表达式 </title>
<script type="text/javascript">
//语法new RegExp(pattern, attributes);
var reg= new RegExp('\\b\\d{1,3}\\b','g');

var array= new Array();
var i=0;
//这里有三个满足的子串
array[0]=reg.exec('11 222 1');

while(array[i]!=null){
i++;
array[i]=reg.exec('11 222 1');

}
document.write("数组"+array+"<br/>");
</script>

</head>

<body>

</body>

</html>

 

 

 

 

2
1
分享到:
评论

相关推荐

    CSS2.0-CSS3.0-HTML5-JavaScript-JDK1.8-正则表达式,帮助文档CHM

    CSS2.0-CSS3.0-HTML5-JavaScript-JDK1.8-正则表达式,全中文帮助文档,全都是CHM版 里面包含15个CHM文件,其中有六大类,有的有多个版本全是中文版 CSS2.0就标准的一个版本,够用了 CSS3.0有P零雾雨版,ISD版还有,...

    javascript表单验证 正则表达式验证表单

    比较实用的javascript做的表单验证,验证的表单域包括用户名、密码、密码确认、密码提示问题、邮箱、手机号码、身份证。表单域基本通过获得焦点显示...提交表单先进行必填项不能为空验证,再进行正则表达式匹配验证。

    手机号-邮箱-用户名-正则表达式

    手机号-邮箱-用户名-正则表达式

    javascript正则表达式表单验证大全

    ### JavaScript正则表达式在表单验证中的应用详解 在Web开发中,表单验证是确保数据质量和用户体验的重要环节。JavaScript正则表达式提供了一种强大的工具,用于前端数据校验,确保用户输入的数据格式正确无误。...

    JavaScript 数据校验 正则表达式 示例代码

    正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则...

    正则表达式用法大全

    - **解析**:该表达式用于验证电子邮件地址的格式是否正确,包括邮箱名、域名和顶级域名等组成部分。 ##### 20. 验证 Internet URL - **表达式**:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$" - **解析**:该...

    表单验证(用到正则表达式)

    本主题主要关注使用正则表达式进行表单验证,涉及到JavaScript和JSP两种技术。正则表达式是一种强大的文本处理工具,能够有效地匹配、查找、替换和验证各种模式。 首先,我们来看表单验证的基本概念。表单是网页中...

    正则表达式(基本包含所有验证的正则)

    ### 正则表达式知识点详解 ...本文通过多个具体的示例介绍了正则表达式的使用方法及其应用场景,希望能帮助读者更好地理解和掌握这一工具。在未来的工作中,合理地运用正则表达式可以极大地提高工作效率和质量。

    正则表达式验证金额格式

    在本场景中,我们关注的是如何使用正则表达式来验证金额格式。金额格式通常要求精确到小数点后两位,并且可能包含正负号。下面将详细介绍如何构建一个适用于这种需求的正则表达式。 首先,让我们了解一个基本的正则...

    JavaScript中使用正则表达式

    JavaScript中使用正则表达式的一些验证

    JavaScript 常用正则表达式

    JavaScript中的正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和验证字符串。它们在编程中扮演着至关重要的角色,特别是在数据验证、搜索和提取信息等方面。在这个"JavaScript常用正则表达式"的资源中,...

    the-book-of-ruby-正则表达式

    正则表达式,又称作正规表达式、正规表示式、规则表达式等,它是计算机科学中一个重要的概念,用于表示某种规律的字符串。正则表达式是由普通字符(例如,字母或数字)以及特殊字符(称为"元字符")组成的文字模式。...

    精通 JavaScript正则表达式

    JavaScript中的正则表达式是一种强大的文本处理工具,用于在字符串中执行模式匹配和搜索操作。它们在数据验证、文本替换和提取子字符串等任务中扮演着核心角色。 首先,正则表达式允许我们测试字符串是否符合特定...

    JavaScript正则表达式迷你书

    《JavaScript正则表达式迷你书》是一本关于JavaScript正则表达式的专业书籍,正则表达式是处理字符串的强大工具,广泛应用于编程语言中的文本处理。本书从字符匹配、位置匹配、括号的作用、回溯法原理、拆分、构建和...

    常用的JavaScript验证正则表达式.txt

    本文将详细介绍一系列常用的JavaScript正则表达式及其应用场景,帮助开发者更好地理解和应用这些表达式。 #### 二、知识点详解 ##### 1. 验证汉字 - **正则表达式**: `[\u4e00-\u9fa5]` - **应用场景**: 当需要...

    正则表达式必知必会v_1.0.pdf

    正则表达式的语法比较容易理解,但学习正则表达式的主要困难在于如何灵活运用这些规则来达到查找和替换的目的。 匹配单个字符 在正则表达式中,可以使用句点(.)来匹配任意单个字符。句点在正则表达式中被称为元...

    《正则表达式详解》.pdf

    在JavaScript中,正则表达式被广泛应用于字符串操作,例如使用RegExp对象或正则表达式字面量创建正则表达式,以及利用String对象的match()、replace()、search()和split()方法进行匹配与操作。 正则表达式的书写...

    JavaScript验证正则表达式大全

    JavaScript中的正则表达式是用于文本模式匹配的强大工具,它在数据验证、字符串处理等方面有着广泛的应用。在JavaScript中,正则表达式可以用来检查字符串是否符合特定的格式,例如邮箱地址、电话号码、身份证号等。...

    精通正则表达式(第三版)简体中文版

    - **JavaScript中的正则表达式**:JavaScript的正则表达式对象提供了丰富的功能,包括全局匹配、忽略大小写等选项。 - **.NET框架中的正则表达式**:通过System.Text.RegularExpressions命名空间提供支持。 #### 六...

    JavaScript&正则表达式

    JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&正则表达式JavaScript&...

Global site tag (gtag.js) - Google Analytics