正则表达式在前后端的实践应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可以通过调用 matcher 对象的 groupCount 方法 来查看表达式有多少个分组。groupCount 方法 返回一个 int 值,表示matcher对象当前有多个 捕获组。 还有一个特殊的组(group(0)),它总 是代表整个表达式。该组不包括在 groupCount 的返回值中。
Java正则表达式中的捕获组实例
03
Fiddler中正则表达式匹配
Fiddler AutoResponder 正则表达式 regex:(?insx)
在前端开发中经常会用到的 Fiddler,来做接口调试。
在使用Autoresponder时,其中的 正则表达式无疑是最便捷的方式。
左侧实例中使用了正则表达式 .* china.* 用于查找字符串中是否 包了 china子串:
Java正则表达式中的捕获组
捕获组是把多个字符当一个单独单元
进行处理的方法,它通过对括号内的字符 分组来创建。 例如,正则表达式 (dog) 创建了单一分 组,组里包含"d","o",和"g"。 捕获组是通过从左至右计算其开括号来编 号。例如,在表达式((A)(B(C))),有四个 这样的组: ((A)(B(C))) (A) (B(C)) (C)
左侧的例子说明如何从一个给定的字符串中找到数 字串: 运行结果是: Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT Found value: 3000 Found value: ! OK?
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String args[] ){ // 按指定模式在字符串查找 String line = "This order was placed for QT3000! OK?"; String pattern = "(\\D*)(\\d+)(.*)"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 现在创建 matcher 对象 Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); System.out.println("Found value: " + m.group(3) ); } else { System.out.println("NO MATCH"); } } }
Java中正则表达式
1
Pattern 类 pattern 对象是一个正则表达式的编译表示。P attern 类没有公共构造方法。要创建一个 Patt ern 对象,你必须首先调用其公共静态编译方 பைடு நூலகம்compile(),它返回一个 Pattern 对象。该方 法接受一个正则表达式作为它的唯一一个参 数 Matcher 类 Matcher 对象是对输入字符串进行解释和匹配 操作的引擎。与 Pattern 类一样, Matcher 也 没有公共构造方法。你需要调用 Pattern 对象 的 matcher 方法来获得一个 Matcher 对象。
Java中正则表达式
Java正则表达式中的类 Java 正则表达式和 Perl 的是最为相 似的。 java.util.regex 包主要包括以下三个 类: Pattern 类: pattern 对象是一个正则表达式的编 译表示。
Matcher 类: Matcher 对象是对输入字符串进行解 释和匹配操作的引擎。 PatternSyntaxException类: PatternSyntaxException 是一个非强 制异常类,它表示一个正则表达式模 式中的语法错误。
JavaScript中正则表达式
search() 和 replace() (属于字符串为主体的方法)
search() 方法 用于检索字符串中指定的子字符串、或正则表达式相匹 配的子字符串,并返回子串的起始位置。 replace() 方法 用于在字符串中用一些字符替换另一些字符、或与正 则表达式匹配的子串。
matches 和 lookingAt 方法都 用来尝试匹配一个输入序列 模式。它们的不同是 matche matches 和 lookingAt 方法 s 要求整个序列都匹配,而l ookingAt 不要求。 lookingAt 方法虽然不需要整 句都匹配,但是需要从第一 个字符开始匹配。
appendReplacem Matcher 类也提供了appendR ent 和 appendTail eplacement 和 appendTail 方 法用于文本替换。
Java中正则表达式
import java.util.regex.*; class RegexExample1{ public static void main(String args[]){ String content = "I am lisite" + "from china.com."; String pattern = ".*china.*"; boolean isMatch = Pattern.matches(patter n, content); System.out.println("字符串中是否包含了 ‘china' 子字符串? " + isMatch); } }
例子: /e/.exec("The best things in life are free!"); 字符串中含有 "e",所以该实例输出为: e
true
02
Java中正则表达式
Java中正则表达式
形式类似于JS中的正则表达式:
^\d+(\.\d+)? ^ 定义了以什么开始 \d+ 匹配一个或多个数字 ? 设置括号内的选项是可选的 \. 匹配 "." 可以匹配的实例:"5", "1.5" 和 "2.21 "。
JavaScript中正则表达式
JavaScript正则表达式语法
/正则表达式主体/修饰符(可选) 例: var patt = /china/i 实例解析: /china/i 是一个正则表达式。 china 是一个正则表达式主体 (用于检索)。 i 是一个修饰符 (搜索不区分大小写)。 我们可以不用设置正则表达式的变量,使用一 些函数: /e/.test("The best things in life are free!")
JS正则表达式修饰符 [abc]查找方括号之间的任何字符。 [0-9]查找任何从 0 至 9 的数字。 (x|y)查找任何以 | 分隔的选项。 元字符是拥有特殊含义的字符: \w表示字母、数字、下划线或汉字 \d查找数字。 \s查找空白字符。 \b匹配单词边界。 \uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。 n+匹配任何包含至少一个 n 的字符串。 n*匹配任何包含零个或多个 n 的字符串。 n?匹配任何包含零个或一个 n 的字符串。 修饰符i执行对大小写不敏感的匹配。 修饰符g执行全局匹配(查找所有匹配 而非在找到第一个匹配后停止)。 修饰符m执行多行匹配。
2
RegExp为主体的方法
exec()方法 exec() 方法用于检索字符串中的正则表达式 的匹配。返回一个数组,其中存放匹配的结 果。如果未找到匹配,则返回值为 null。
JavaScript中正则表达式
使用 test()
使用 exec()
例子: var patt = /e/; patt.test("The best things in life are free!"); 字符串中含有 "e",所以该实例输出为:
search() (字符串)
replace() (字符串)
JavaScript中正则表达式
使用 RegExp 对象 在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的 正则表达式对象。
JavaScript中正则表达式
正则表达式对象RegExp为主体的方法
1
test()方法 test() 方法用于检测一个字符串是否匹配某个 模式,如果字符串中含有匹配的文本,则返 回 true,否则返回 false。
正则表达式在前后端的实践应用
作者 黑山小特
CONTENTS
01
JavaScript中正则表达式
02
Java中正则表达式
03
Fiddler中正则表达式匹配
04
Nginx配置文件中location正则匹配
前瞻
正则表达式在不同的语言有细微的差别
JavaScript中正则表达式是 \.*china.*\ig 这样的形式,java中则是 ".*china.*" 这样双 引号的形式了。 JavaScript中存在RegExp 对象,而Java中存在Pattern类与Matcher类。 在其他的语言中,一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中 则需要有两个反斜杠才能被解析为其他语言中的转义作用。
01
JavaScript中正则表达式
JavaScript中正则表达式
正则表达式(英语:Regular Expression,
在代码中常简写为regex、regexp或RE)使 用单个字符串来描述、匹配一系列符合某个
句法规则的字符串搜索模式。
可被用于文本搜索和文本替换。
JavaScript中正则表达式 JS正则表达式模式
JavaScript中正则表达式
search() (正则)
使用正则表达式搜索 "China " 字符串,且不区分大小 写: var str = "Visit China!"; var n = str.search(/China/i); 输出结果为: 6 使用字符串作为参数,字符 串参数会转换为正则表达 式: 检索字符串中 "China" 的子 串: var str = "Visit China!"; var n = str.search("China"); 输出结果为: 6
Java中正则表达式
在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义 的作用. 而在 Java 中正则表达式中则需要有两个反斜杠才能被解析 为其他语言中的转义作用。 可理解为,在 Java 的正则表达式中,两个 \\ 代表其他语言 中的一个 \,这也就是为什么表示一位数字的正则表达式是 \ \d,而表示一个普通的反斜杠是 \\\\。
2
Pattern类和Matcher类
Java中正则表达式
start 和 end 方法
Start 方法返回在以前的匹配 操作期间,由给定组所捕获 的子序列的初始索引 , end 方法最后一个匹配字符的索 引加 1。
replaceFirst 和 replaceAll
replaceFirst 和 replaceAll 方 法用来替换匹配正则表达式 的文本。不同的是, replace First 替换首次匹配,replace All 替换所有匹配。
replace() (正则)
将字符串中的 Microsoft 替 换为 China: var str = document.getElement ById("demo").innerHTML; var txt = str.replace(/microsoft /i,"China"); 结果输出为: Visit China 将接收字符串作为参数: var str = document.getElement ById("demo").innerHTML; var txt = str.replace("Microsof t","China"); 结果输出为: Visit China!