regex - VB6 和 C# 正则表达式

标签 regex c#-4.0 vb6 vb6-migration

我需要将一个 VB6(我不熟悉)项目转换为 C# 4.0 项目。该项目包含一些用于字符串验证的正则表达式。

我需要知道正则表达式在这两种情况下的行为是否相同,所以如果我只是将正则表达式字符串从 VB6 项目复制到 C# 项目,它们的工作方式是否相同?

我对正则表达式有基本的了解,我几乎可以阅读一个正则表达式的功能,但是对于口味等,目前这有点超出我的想象。

例如,这 2 行是否等效?

VB6:

isStringValid = (str Like "*[!0-9A-Z]*")

C#:
isStringValid = Regex.IsMatch(str, "*[!0-9A-Z]*");

谢谢!

最佳答案

老VB Like运算符,尽管看起来,不是正则表达式接口(interface)。它更像是一个全局模式匹配器。见 http://msdn.microsoft.com/en-us/library/swf8kaxw.aspx

在您的示例中:

Like "*[!0-9A-Z]*"

匹配以任何字符(零个或多个)开头和结尾的字符串,然后不匹配中间某处的字母数字字符。正则表达式为:
/.*[^0-9A-Z].*/

编辑 回答您的问题:不,两者不能互换使用。但是,转换 Like 相当容易。的操作数转换为正确的正则表达式:
Like       RegEx
========== ==========
?          .
*          .*
#          \d
[abc0-9]   [abc0-9]
[!abc0-9]  [^abc0-9]

对此有一些警告,但这应该可以帮助您入门并涵盖大多数情况。

关于regex - VB6 和 C# 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820896/

相关文章:

c# - 在字符串中查找多个非连续出现的字符

regex - 在 Splunk 中指定/访问分隔字段中的特定项目的最佳方式是什么?

c# - C# 4.0 中的类属性/字段可以是匿名类型吗?

c#-4.0 - 时间:2019-03-17 标签:c#genericsnew()constraints with type : (new(T))

javascript - 正则表达式以匹配文本区域中用空格填充的行条目

regex - 匹配任何数字的正则表达式是什么,它们之间有空格?

asp.net-mvc-3 - 将图像转换为字节[]

sql - VB6语法问题, "no current record"错误

vb.net - 从头开始创建企业 .Net 命名空间框架的最佳方法是什么?

c# - 将 VB6 字符转换为 C# 字符串