2012-03-30 85 views
0

我尝试用源验证输入'3a'为正则表达式'[_a-zA-Z][_a-zA-Z0-9]*'德尔福TRegEx错误?

len := TRegEx.Create([_a-zA-Z][_a-zA-Z0-9]*).Match('3a').Length; 

我预计0len变量,但它是2。那是对的吗?

回答

1

这不是你真正的代码。一开始它不会编译。你省略了引号。如果我们解决这个问题,那么我们有:

len := TRegEx.Create('[_a-zA-Z][_a-zA-Z0-9]*').Match('3a').Length; 

但是,如您所述,返回值1而不是2。此返回值是正确的,因为a匹配[_a-zA-Z],然后输入字符串结束。

我希望你有错误的正则表达式。也许你应该使用

^[_a-zA-Z][_a-zA-Z0-9]*$ 

^输入字符串的开头匹配,$ MATHES结束。推测该输入来自源代码标记器。

所以结论是,在这个模式和输入的Delphi正则表达式代码中没有明显的错误。

+10

一旦我遇到了问题,并想“嘿,我可以使用正则表达式来解决这个问题”。然后,我有两个问题。 – 2012-03-30 17:25:29