0

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

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

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

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

请告诉我如何用正则表达式做到这一点

4

4 回答 4

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.
于 2013-05-24T13:47:04.210 回答
1

试试这个正则表达式:

/^[a-z0-9]+(( AND [a-z0-9]+)+)?$/i
于 2013-05-24T14:06:18.957 回答
0

如果没有更好地定义问题:

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

这里玩它。

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

于 2013-05-24T13:50:12.570 回答
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
于 2013-05-24T13:55:18.673 回答