过滤器的正则表达式

时间:2013-05-24 12:57:55

标签: c# .net regex

我需要检查过滤器表达式的有效性

例如用户输入textBox表达式“F117 AND F118”。这是正确的!但.. 用户可以输入不正确的表达式。例如:“F117 F118”,“F117,F118”等

只有正确的语法“asd”或“asd AND asgdfg”

如果表达式无效/正确,则应显示异常

请告诉我如何使用正则表达式

4 个答案:

答案 0 :(得分:1)

你的问题不是特别明确,但你会想要这样的事情:

Regex r = new Regex(@"^\w+( AND \w+)*$", RegexOptions.IgnoreCase);
if(!r.IsMatch(input))
{
    throw new ArgumentOutOfRangeException();
}

含义:

^            #Start of string.
\w+          #Some word characters.
( AND \w+)   #A group containing the word AND followed by some word characters.
*            #That previous group can repeat zero or more times.
$            #End of string.

答案 1 :(得分:1)

试试这个正则表达式:

/^[a-z0-9]+(( AND [a-z0-9]+)+)?$/i

答案 2 :(得分:0)

没有更好的问题定义:

(\S*)(\s(?:AND)\s(\S*))?

请参阅here进行播放。

捕获组1将拥有您的第一个术语,组3将拥有您的第二个术语(如果存在)。

答案 3 :(得分:0)

我不知道这是不是你想要的,但这就是我想出来的。

var s = "f123 AND f234";
if(/^([a-z A-Z]{1}[0-9]+)$|(([a-z A-Z]{1}[0-9]+) AND ([a-z A-Z]{1}[0-9]+))$/.test(s))
alert("Eurica!");

其中测试方法根据正则表达式检查您传递的字符串是否正确。

^: starts with 

a-z A-Z : small letters and capital letters i.e A or a ...

0-9: digits 

+: 1 or more ... so till now we have f123 or F12345 or F133453

|: or

$: ends with