我编写了一个在AX2009中处理regex验证的方法。问题是它总是返回false,不管表达式或输入字符串是什么。返回没有错误,只是‘假’的想法,看看?我可能错过了一些简单的东西。
这篇文章已经更新到包含了修正的方法,没有错误,所以您可以剪切和粘贴代码,以便在您的项目中使用。符合BP标准,可随时使用。-享受
static boolean validateMe(str regexFilter, str _testString)
{
System.Text.RegularExpressions.Match regExMatch;
boolean retVal;
str regExpression;
;
//See if any of the static expressions were selected
switch (regexFilter)
{
case 'integer' :
regExpression = '^\\d+$';
break;
case 'rgbcolor' :
regExpression = '^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\,([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\,([01]?\\d\\d?|2[0-4]\\d|25[0-5])$';
break;
case 'number' :
regExpression = '^(\\d+\\.?\\d*|\\d*\\.?\\d+)$';
break;
case 'email' :
regExpression = '^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$';
break;
case 'phone' :
regExpression = '^(\\()?(\\d{3})(\\)|-)?([0-9]{3})(-)?([0-9]{4}|[0-9]{4})$';
break;
case 'nopunctationphone' :
regExpression = '^\\d{10}$';
break;
default :
//No static expression matched, use the passed-in value
regExpression = regexFilter;
}
//see if the string matches
if (_testString != '')
{
//see if string matches expression; validation is good
regExMatch = System.Text.RegularExpressions.Regex::Match(_testString, regExpression);
retVal = regExMatch.get_Success();
}
else
{
//string does NOT match expression; validation fails
retVal = false;
}
return retVal;
}发布于 2009-11-18 15:14:10
您已经交换了应该是的变量:
regEx = new System.Text.RegularExpressions.Regex(regExpression);发布于 2009-11-16 20:29:06
是因为你需要避开字符串中的反斜杠吗?
regExpression = '^\\d*$';等。
https://stackoverflow.com/questions/1743681
复制相似问题