`
cuishen
  • 浏览: 297320 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

js动态正则表达式

    博客分类:
  • js
阅读更多
做项目的时候可能会遇到用js验证表单输入正确性的需求,这时候就需要用到js的正则表达式。举个例子:比如说要验证月份,格式为:'yyyy-MM',这个正则表达式写起来很简单,实在写不出,也可以Google、百度一把,网上例子一大堆!但是js正则表达式就这样写死也会带来新的问题:如果配置文件的月份格式改了呢?改成'yyyyMM'、或者是'yyyy_MM'...呢??我们是不是要记得去把js中的正则表达式也跟着一遍遍的改呢??

这时候我们就要问了:怎样才能写出动态的正则表达式呢,修改了配置文件,就不需要再去动代码了呢?

笔者翻阅了js手册,没有找到将字符串转换成正则表达式的方法,但是可以用eval();方法动态执行脚本的方式间接解决这个问题!从而写出更加通用的代码!

下面贴出上例的通用解决方案:
/**
 * 验证月份表单输入是否合法
 * pattern : 月份格式字符串
 * id : 表单id
 */
function validateMonth(pattern, id) {
	var text = document.getElementById(id);
	var monthStr = text.value;
	var splitChar = "";
	if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);
	eval("var re = /\\d{4}" + splitChar + "\\d{2}$/;");
	//var re = /\d{4}-\d{2}$/;
	if(monthStr.match(re) == null) {
		alert("请参考格式[" + pattern + "]输入!\n" + "e.g \"2010" + splitChar + "11\" or \"2010" + splitChar + "03\"");
		text.value = "";
		text.focus();
		return false;
	}
	return true;
}

有一点值得注意:动态拼出脚本字符串传给eval()方法执行时,需要对字符'\'转义

分享到:
评论
8 楼 select*from爱 2010-07-02  
最好不要使用eval()函数,会为程序带来风险很安全隐患
http://www.iteye.com/topic/670774
6 楼 liaofeng_xiao 2010-06-30  
cuishen 写道
lorz 写道
var r = new RegExp("^\\d{4}"+"-"+"\\d{2}$")

经过测试,该方法也是可行的!只要将"-"换成变量名就能写出动态正则表达式!(奇了怪了,之前也试过这个办法,怎么当时就失败了呢?)


var r = new RegExp("^\\d{4}"+"-"+"\\d{2}$")
"abc".replace(\[b]\g,"c");
注意区别:RegExp的构造函数,参数的前后是不加\\的,而不用RegExp构造正则,是需要的。

不知道这是不是你疑惑的地方!
5 楼 Relucent 2010-03-17  
= =!

楼主不知道 其实JS的正则可以 new RegExp()吗
4 楼 yeaha 2010-03-10  
var r = new RegExp();
r.compile('^[a-z]+$');
r.test('abc');
r.compile('^\\d+$');
r.test('123');
3 楼 keanu-re 2010-03-10  
楼主尴尬了。。
2 楼 cuishen 2010-03-08  
lorz 写道
var r = new RegExp("^\\d{4}"+"-"+"\\d{2}$")

经过测试,该方法也是可行的!只要将"-"换成变量名就能写出动态正则表达式!(奇了怪了,之前也试过这个办法,怎么当时就失败了呢?)
1 楼 lorz 2010-03-05  
var r = new RegExp("^\\d{4}"+"-"+"\\d{2}$")

相关推荐

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

    "正则表达式必知必会" 正则表达式是一种强大的文本处理工具,广泛应用于各个领域。下面是对正则表达式的详细解释: 正则表达式的用途 正则表达式主要用于处理文本,提供了两大主要功能:查找和替换。查找功能允许...

    js_正则表达式全攻略

    ### 正则表达式在JavaScript中的应用全攻略 #### 一、正则表达式的概念及其在JavaScript中的重要性 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助开发者进行复杂的字符串搜索和替换。在...

    Java使用正则表达式提取XML节点内容的方法示例

    1. JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript 2. 正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg 这些工具可以帮助开发者快速测试和生成正则表达式,从而提高...

    javascript正则表达式迷你书 (1).pdf

    JavaScript 正则表达式迷你书 本书是 JavaScript 正则表达式的入门级教程,旨在帮助读者快速掌握正则表达式的基本概念和应用。下面是本书的知识点摘要: 第一章:正则表达式字符匹配攻略 * 两种模糊匹配:横向...

    jq非空验证,js正则表达式验证邮箱和手机号码

    JavaScript正则表达式是用于匹配字符串模式的强大工具。在验证邮箱和手机号码时,我们需要创建符合特定规则的正则表达式。对于邮箱验证,通常的正则表达式如下: ```javascript var emailRegex = /^[a-zA-Z0-9._%...

    js正则表达式限制文本框只能输入数字,能输小数点.

    ### 正则表达式在JavaScript中的应用:限制文本框只能输入数字及小数点 在Web开发中,经常需要对用户输入的数据进行合法性验证。为了确保数据格式正确且符合预期,开发者通常会在前端使用JavaScript结合HTML来实现...

    常用正则表达式大全.txt

    根据提供的文件信息,我们可以整理出一系列与正则表达式相关的知识点。这些知识点涵盖了从基本的数字验证到复杂的字符串匹配等多个方面。下面是详细的知识点总结: ### 基本概念 正则表达式是一种用于文本模式匹配...

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

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

    js正则表达式(姓名、证件号码)

    js正则表达式,按甲方(银行)提供的个人证件信息采集规则编写的对应正则表达式

    三目运算符+正则表达式

    在编程世界中,三目运算符和正则表达式是两个非常重要的概念,它们各自扮演着独特的角色,同时也常被结合起来使用,以提高代码的简洁性和效率。让我们深入探讨这两个主题。 首先,三目运算符,也称为条件运算符,是...

    javascript常用正则表达式大全

    javascript常用正则表达式大全,基本覆盖基本需求的正则表达式

    正则表达式调试工具

    正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,广泛应用于数据验证、搜索替换和文本处理等领域。正则表达式调试工具是开发人员用来测试和优化这些模式的重要辅助工具。本文将...

    使用正则表达式验证一年的12个月份

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作,广泛应用于编程语言中。在IT行业中,正则表达式是处理字符串时不可或缺的一部分,尤其在数据验证、文本提取等方面。在这个场景中,我们需要创建一...

    JS只能输入数字,数字和字母等的正则表达式

    在JavaScript(JS)中,正则表达式是一种强大的工具,用于匹配、查找、替换和验证字符串中的模式。本文将深入探讨如何使用正则表达式来限制用户在HTML文本框中只能输入数字和字母。 首先,我们需要理解正则表达式的...

    通过正则表达式生成数据

    2. **利用编程语言**:大多数编程语言如Python、Java、JavaScript等都内置了正则表达式的支持,并提供了方法来生成符合正则表达式的随机字符串。例如,Python的`re`模块配合`random.choice`或`random.choices`可以...

    只验证数字和字母的正则表达式

    在提供的示例代码中,我们看到一个简单的登录页面,其中包含了一个名为 `AA` 的 JavaScript 函数,该函数用于验证用户输入的用户名是否符合上述正则表达式的规则。 ```javascript function AA() { var name = ...

    JS的正则表达式进行验证

    在JavaScript(JS)中,正则表达式同样发挥着不可或缺的作用,尤其是在用户输入验证方面,能够极大地提高程序的健壮性和用户体验。 ### 标题解析:“JS的正则表达式进行验证” 标题直接点明了文章的主题,即利用...

    源码(精通正则表达式&实战正则表达式)

    本资源“源码(精通正则表达式&实战正则表达式)”专注于JavaScript环境下的正则表达式学习,通过一系列视频教程和配套源码,帮助开发者提升对正则表达式的理解和应用能力。 首先,"精通正则表达式五部视频"可能涵盖...

Global site tag (gtag.js) - Google Analytics