我正在尝试编写只应该获得以下模式的正则表达式:
WordWihoutNumbers.WordWihoutNumbers='value'
以及具有多个子表达式的模式,如:
WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2' AND WordWihoutNumbers.WordWihoutNumbers='value3'
WordWihoutNumbers必须至少有两个字符且没有数字。
例如,这些字符串是有效的:
而这些并不是:
我使用RegexBuddy编写了以下Regex字符串:
(?i)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+'(\s)*((\s)*(AND|OR)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+')*当我使用RegexBuddy测试它时,它工作得很好,但是当我在我的C#代码中使用它时,我总是得到'false‘结果。
我做错什么了?
这就是我在我的C#代码中所做的:
string expression = "Hardware.Make=’Lenovo’ OR User.Sitecode=’PRC’";
Regex expressionFormat = new Regex(@"(?i)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+'(\s)*((\s)*(AND|OR)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+')*");
bool result = expressionFormat.IsMatch(expression );结果参数总是false。
更新:感谢@nhahtdh的评论,我在输入检查中使用了一个’,而不是',我需要在这个表达式中添加括号验证,例如:((WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2') AND WordWihoutNumbers.WordWihoutNumbers='value3')是有效的,但是
)是无效的。
是否可以使用Regex实现?你有什么主意吗?
发布于 2014-02-09 06:02:05
感谢@nhahtdh发现了我的问题。
问题是’和'是不同的代码点,这就是我的正则表达式不能工作的原因(这是输入问题)。
https://stackoverflow.com/questions/21577651
复制相似问题