RegExp的test()方法

本文介绍如何使用正则表达式对象的test()方法来验证输入字符串是否符合指定的邮箱格式。通过一个HTML和JavaScript结合的例子展示了如何实现这一功能。

很多基础都不是太清楚,从今天开始把基础夯实。

昨天写代码用到了test(),知道这是正则表达式对象的一个方法,但是记得不是太清楚,总结一下

语法:

regexObj.test(str)

参数是一个字符串类型的值,The test() method executes a search for a match between a regular expression and a specified string. Returns true or false.这是MDN上的解释,返回true或者false,如果匹配返回true,否则返回false。

还有一个是获取到input里的输入的值,这个值就是字符串类型,可以作为test()的参数。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<!-- 引入angular文件 -->
	<script type="text/javascript" src="https://cdn.bootcss.com/angular.js/1.5.1/angular.min.js"></script>
	<script type="text/javascript" src="https://cdn.bootcss.com/angular.js/1.5.0-beta.1/angular-route.min.js"></script>
	<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
	<form>
		<label for="#email">请输入邮箱</label><input type="text" id="email">
		<input type="button" value="按钮" class="btn">
	</form>

</body>
<script type="text/javascript">
var emailReg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;

$(".btn").click(function(){
	var t = $("#email").val();
	var isReg = emailReg.test(t);
	if(isReg == true){
		alert("true");
	}else{
		alert("false");
	}
});

</script>
</html>
这是例子。

Regex Testor Version 1.02 Copyright (c) 2013 Fiery Red - flameleo 我们在使用正则表达式( regex: regular expression )的过程中,经常发现正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。对于刚接触正则表达式的人来说多练习,多使用,才能熟练掌握正则表达式。 由于难于读写,容易出错,且需要反复练习。所以找一种工具对正则表达式对我们脑中构思的regex进行测试是很有必要的。 1.特点 a.适合初学者,在不断测试用学习如何使用正则表达式。 b.可以分组保存,测试中用到的正则表达式。 c.本工具使用最常见的regex。以下是简单示例: a|b Matches a or b gr(a|e)y Matches a or e . Matches any single character [abc] Matches a single character a, b or c [^abc] Matches any single character except a, b or c [a-z] Matches a single charactor in the range a to z [a-zA-Z] Matches a single charactor in the range a to z or A to Z ^ Matches the start of the filename $ Matches the end of the filename * Matches the preceding element zero or more times ? Matches the preceding element zero or one times + Matches the preceding element one or more times {x} Matches the preceding element x times {x,} Matches the preceding element x or more times {x,y} Matches the preceding element between x and y times 值得一提的是()代表子匹配,有些环境中gr(a|e)y Matches gray or grey 还支持许多常见的转义字符 \b,\B,\c,\d,\D,\f,\n,\r,\s,\S,\t,\v,\w,\W,\x,\u 具体详见附件 Regular Expression Syntax1.html 2.功能介绍 a.界面上显示提供regex输入框和原文本框,点击[模式匹配]按钮后,会在右侧输出结果,包括匹配字符串列表和文本。 b.对于测试中一些有用的regex,点击[insert]按钮添加到模式列表,以备日后使用。你可以位该regex添加描述分组,该信息会在程序结束后保存在CustomPatternInfo.ini文件中。 c.可以参考Readme_1.jpq和Readme_2.jpq图片介绍。 3.有待改进 a.界面布局和控件友好型和交互性。 b.界面功能提供regex语法支持。(暂时可以通过导入附件RegexSystax.ini到CustomPatternInfo.ini中) 4.意见反馈 a.请将您的宝贵意见反馈到 FieryRed_2012@163.com 附件: Readme.txt Readme_1.jpg Readme_2.jpg Regular Expression Syntax.html RegexSystax.ini
<think>嗯,用户这次想了解与tuple_regexp_test相关的信息。看起来用户可能正在处理正则表达式相关的编程任务,而且提到"正则表达式看不懂",说明可能需要基础解释。 根据引用材料,tuple_regexp_test的核心功能是正则表达式匹配计数。用户上次的问题是关于快速排序的,这次突然切到正则表达式工具,可能是跨项目需求。需要特别注意用户提到的困惑点,重点解释语法和选项。 从引用中提取关键信息:这个函数输入字符串和正则表达式,输出匹配数量。特别说明单个字符串匹配时返回1或不匹配返回0——这个特性很适合做布尔判断。还支持invert_match选项,这里需要举例说明。 考虑到用户对正则表达式不熟悉,应该: 1. 用最简单的话定义函数作用 2. 强调输入输出结构 3. 举例说明基础匹配场景 4. 重点解释invert_match这个反逻辑选项 5. 提醒参考文档但补充常见用例 用户提到引用内容"仅供参考",说明可能需要更贴近实际应用的解释。上次回答快速排序时采用了代码示例+文字说明的结构,这次也应该保持类似风格,但改为正则表达式用例。 注意到引用中有HALCON函数的典型命名风格tuple_前缀,可以推测用户可能在用机器视觉库。虽然用户没明说,但补充HALCON环境信息可能有帮助。 最后生成的问题要覆盖:基础语法(针对用户说看不懂)、性能考量、常见错误场景。这样既能解决当前问题,也预判了后续可能的需求。 </think>下面是关于`tuple_regexp_test`函数的详细说明(基于HALCON库函数): ### 核心功能 `tuple_regexp_test`用于**检测字符串是否匹配正则表达式**,返回匹配数量: ```python tuple_regexp_test(Data, Expression, NumMatches) ``` - **输入参数**: - `Data`:待检测的字符串或字符串元组(可批量处理) - `Expression`:正则表达式模式 - **输出参数**: - `NumMatches`:匹配次数统计 - **单字符串场景**:返回`1`(匹配成功)或`0`(匹配失败) - **多字符串场景**:返回所有字符串的匹配总数 --- ### 关键特性 1. **布尔化输出** 本质上将正则匹配转化为布尔值: ```python # 伪代码逻辑 if 字符串匹配正则: return 1 else: return 0 ``` 2. **批量处理能力** 支持输入字符串元组,高效处理批量检测: ```python Data = ["file1.jpg", "file2.png", "text.doc"] Expression = "\.(jpg|png)$" # 匹配图片后缀 NumMatches = 2 # 前两个字符串匹配成功 ``` 3. **反向匹配选项** 通过`'invert_match'`选项实现**非匹配**计数: ```python # 检测非图片文件数量 tuple_regexp_test(Data, "\.(jpg|png)$", NumMatches, 'invert_match') # 输出: NumMatches = 1 (匹配text.doc) ``` --- ### 正则表达式语法 遵循标准正则规则(与`tuple_regexp_match`一致): | 表达式 | 说明 | 示例匹配 | |--------|--------------------|----------------| | `^a` | 以a开头 | "apple" | | `b$` | 以b结尾 | "web" | | `\d` | 数字字符 | "0"-"9" | | `a|b` | 匹配a或b | "a" 或 "b" | | `(ab)` | 捕获分组 | 提取"ab" | > 💡 提示:复杂表达式建议分步测试,可用在线工具(如regex101.com)验证[^1]。 --- ### 典型应用场景 1. **文件分类** ```python # 检测图片文件名 tuple_regexp_test("image.png", "\.png$", IsPNG) # IsPNG=1 ``` 2. **数据清洗** ```python # 批量验证邮箱格式 emails = ["a@b.com", "invalid"] tuple_regexp_test(emails, "^[\w\.]+@\w+\.\w+$", ValidCount) # ValidCount=1 ``` 3. **条件过滤** 配合`'invert_match'`筛选异常数据: ```python # 找出不含数字的字符串 tuple_regexp_test(["A1", "B", "C2"], "\d", NonDigitCount, 'invert_match') # NonDigitCount=1 ``` --- ### 性能建议 - **预编译表达式**:高频调用时,先用`tuple_regexp_match`预编译正则表达式 - **避免贪婪匹配**:如`.*`可能引发性能问题,优先使用限定符`{n,m}` - **批量优先**:单次处理1000个字符串比循环调用1000次快10倍以上[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值