开发工具与关键技术:VS+正则表达式
作者: 李伙
撰写时间: 2019年6月22日
在学习MVC过程中,我们很多时候都是要对数据进行一些特殊的验证或将指定的数据替换成另一条数据,我们都可以用到正则表达式来实现,在JavaScript和C#中都会使用到正则表达式。什么是正则表达式呢?接下来就认识一下正则表达式。正则表达式的概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一 个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑,它的作用主要是用来验证、搜索和替换。我们首先看看正则表达式在JavaScript中是如何使用的。
如上图所示:正则表达式在JavaScript中的定义,其中expression即为正则表达式的名称,模式(pattern)可以是任何复杂或简单的正则表达式(但必须是在JavaScript支持范 围内的),标志(flags)即用来表明正则表达式行为。expression为正则表达式的名称可以自己随便命名的。JavaScript中可以支持三个标志,分别为:g: 表示全局(global)模式,表示pattern会应用于所有字符串,而不是找到一个匹配项后立即停止。
i :表示不区分大小写(ignore)模式。即忽略pattern和字符串的大小写。
m:表示多行(multiple)模式。 即到一行文本末尾时还会继续查找下一行中是否存在匹配的项。
JavaScript中正则表达式主要方法为:expression.test() 测字符串string,看它是否含有与regexp相匹配的文本。如果 string中含有这样的文本,该方法将返回 true,否则,返回false。expression.exec() exec()将检索字符串string,从中得到与正则表达式regexp相匹配的文本。如果exec()找到了匹配的文 本,它就会返回一个结果数组。否则,返回null。讲了这么多,就看看具体例子:
如上图所示:我们都知道我们的身份证号码是18位数字的,为了防止用户在录入信息时不小心写漏或者写多了,我们就可以利用正则表达式来进行验证,如果输入错误就会在保存的时候提醒用户。先看看正则表达式是什么意思:“^”表示匹配字符串的开始,“$”表示匹配字符串的结束,“\d”表示匹配数字,“{18}”表示重复18次,“\d{18}”表示重复匹配数字18次。因为我们的身份证号码最后一位有可能是数字也有可能是X或者x,所以最后一位也要有这些判断。然后就是if判断,判断用户填入的信息是否与我们定义好的正则表达式相同,如果相同则证明用户填入的信息是符合的,反之则是错误。错误时会有以下提示框提醒用户身份证号码信息有误。
在看看正则表达式在C#中如何使用的。在C#中使用正则表达式之前要先引用它的类,在C#中正则表达式使用的类为:System.Text.RegularExpressions.Regex;在C#中正则表达式使用的方法有4个,分别为:
测试:Regex.IsMatch(“被测试字符串”, “正则表达式”, “正则表达式选项/模式”);Regex表示不可变的正则表达式,IsMatch()表示指示所指定的正则表达式是否使用指定的匹配选项在指定的输入字符串中找到了匹配项RegexOptions表示提供用于设置正则表达式选项的枚举值,IgnoreCase表示不区分大小写。例子如下:
匹配出第一条结果:Regex.Match(“被匹配字符串”, “正则表达式”, “正则表达式选项/模式”);即在被匹配的字符串使用正则表达式匹配出符合的第一个字符串。Match()表示使用指定的匹配选项在输入字符串中搜索指定的正则表达式的第一个匹配项。例子如下:
匹配出所有结果: Regex.Matchs(“被匹配字符串”, “正则表达式”, “正则表达式选项/模式”);即在被匹配的字符串使用正则表达式匹配出所有符合其正则表达式的字符串。Matchs()表示使用指定的匹配选项在指定的输入字符串中搜索指定的正则表达式的所有匹配项。例子如下:
替换:Regex.Replace(“被匹配字符串”, “正则表达式”, “替换字符”, “正则表达式选项/模式”);即把被匹配到的字符串使用正则表达式替换成指定的字符串。Replace()表示在指定的输入字符串内,使用指定的替换字符串替换与指定正则表达式匹配的所有字符串。例子如下:
我们可以看看具体例子:
如上图所示:是保存题目信息的部分代码,这里就用到了正则表达式,首先是获取题目信息,然后是替换多余内容,这里用到了零宽先行断言,这里即从“onload”匹配到“src”之前的内容,然后把匹配到的字符串替换为空。然后定义保存图片名称的列表,再匹配出所有的图片名称,再把所有的图片名称保存到列表中。