加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:48:44 所属栏目:百科 来源:网络整理
导读:非显式限定符: 星号 * 描述“出现0次或多次” 加号 + 描述“出现一次或多次” 问号 ? 描述“出现0次或1次” 显式限定符:花括号{}及其中的数值表示模式出现次数的上下限,如 x{5} 表示准确匹配5个x,即xxxxx x{1,3} 可匹配x,xx,xxx 元字符: $字符串(或

非显式限定符:

星号 * 描述“出现0次或多次”

加号 + 描述“出现一次或多次”

问号 ? 描述“出现0次或1次”


显式限定符:花括号{}及其中的数值表示模式出现次数的上下限,如

x{5} 表示准确匹配5个x,即xxxxx

x{1,3} 可匹配x,xx,xxx


元字符:

$字符串(或行)的结束

^ 字符串(或行)的开始

. 匹配任何单字符

[ ] 范围符号

( ) 模式分组符

| 或

转义字符


字符类

字符类在中括号[ ]中定义,只匹配单个字符

如:要匹配数值可以用[01213456789]或[0-9],匹配小写字母可以用[a-z]

字符类中使用^来排除中括号中的内容,如[^13579]用来匹配不包含1、3、5、7、9的内容

如:^[^-][1-9]$ 表示匹配非负的一位数字

[0-9a-zA-Z]表示匹配任意的字符数字


预定义的集合元字符

用特定的表达式代表一类字符集合,如d匹配所有数字

常用元字符:

t匹配制表符

r匹配回车符

w匹配任意单词字符,等效于[a-zA-Z_0-9]

Ww 的否定,等效于[^a-zA-Z_0-9]

s匹配任意空白区域字符

S匹配任意非空白区域字符

d匹配任意十进制数字

D匹配任意非十进制数字


ASP.NET 中RegularExpressionValidator验证控件RegularExpressionValidators使用注意事项:

1、决不要使用验证程序要验证的控件中的空字符串来激活验证器。只有 RequiredFieldValidator 才可以捕获空字符串。

2、您无需指定匹配字符的开始与结尾(^和$)- 它们是事先假设的。如果添加了开始与结尾,也没有任何影响,不需要这样做。

3、对于所有验证控件来说,必须在客户端以及服务器端进行验证。如果正则表达式不是 ECMAScript 兼容方式,客户端验证将失败。为了避免这种情况,确保表达式是 ECMAScript 兼容方式,否则只在服务器端进行控件验证。


Regex类

常用方法:

Escape / Unescape字符串中的转义元字符,用作表达式中的文字

IsMatch如果正则表达式在输入字符串中发现匹配,返回“Ture”

Match如果在输入字符串中发现匹配,则返回匹配对象

Matches如果在输入字符串中发现包含任何或全部匹配,则返回匹配集合对象

Replace用给定的替换字符串替换输入字符串中的匹配

Split将输入字符串拆分成用正则表达式匹配分开的数组元素时,返回数组字符串


Compiled当在循环中执行许多匹配操作时使用此选项。这可以节省每一循环的分析表达式步骤

Multiline它与输入字符串中的行数没有关系。确切地说,它只修改^和$的方式,以便匹配行开始 (BOL) 和行结尾 (EOL),而不是匹配整个输入字符串的开始和结尾

IgnoreCase使模式在匹配搜索字符串时忽略大小写

IgnorePatternWhitespace允许根据需要在模式中包括任意数量的空白区域,也支持使用 (?# 注释 #) 语法在模式中加入注释

SingleLine它与输入字符串中的行数没有关系。更确切地说,它将导致.(句点)元字符匹配任意字符,而不是除 n 之外的任意字符(默认情况)

使用正则表达式常执行的操作包括:验证、匹配和替换。大多数情况下,可以使用Regex类的静态方法完成这些操作,不需要实例化Regex类本身。要执行验证,全部要做的就是必建或找到正确的表达式,然后使用Regex类的 IsMatch() 方法将表达式应用到输入字符串中。例如,下面的函数演示了如何使用正则表达式验证邮政编码:

private void ValidateZipButton_Click(object sender,System.EventArgs e)
{
   String ZipRegex = @"^d{5}$";
   if(Regex.IsMatch(ZipTextBox.Text,ZipRegex))
   {
      ResultLabel.Text = "ZIP is valid!";
   }
   else
   {
      ResultLabel.Text = "ZIP is invalid!";
   }
}

类似的,可以使用静态 Replace() 方法将匹配替换为特定字符串,如下所示:

String newText = Regex.Replace(inputString,pattern,replacementText);

最后,可以使用如下代码遍历输入字符串的匹配集合:

private void MatchButton_Click(object sender,System.EventArgs e)
{
   MatchCollection matches = Regex.Matches(SearchStringTextBox.Text,MatchExpressionTextBox.Text);
   MatchCountLabel.Text = matches.Count.ToString();
   MatchesLabel.Text = "";
   foreach(Match match in matches)
   {
      MatchesLabel.Text += "Found" + match.ToString() + " at 
      position " + match.Index + ".<br>";
   }
}

参考:http://msdn.microsoft.com/zh-cn/library/ms972966.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读