首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用begin/end锚点的CAtlRegExp表达式问题

使用begin/end锚点的CAtlRegExp表达式问题
EN

Stack Overflow用户
提问于 2010-12-29 03:53:52
回答 1查看 336关注 0票数 1

我有一些使用CAtlRegExp执行一些验证的代码。在特定情况下,邮政编码(5或5-4格式)。此外,我希望数据就是这样,所以我使用锚点(^和$)。当我使用无锚点表达式时,匹配调用成功。当我添加锚点时,使用完全相同的数据匹配调用失败。

下面的代码就是我正在做的事情,在代码中为失败的情况提供了值。我承认我不是一个正则表达式向导,但是RegEx伙伴对它在代码中的格式表达式很满意。

任何帮助都将不胜感激。如果我遗漏了什么,请告诉我。

谢谢。

代码语言:javascript
运行
复制
sData = "12345-1234";
m_FormatExpression = "^(\\d{5})(-(\\d{4}))?$";

CAtlRegExp<>   regex;
REParseError   status = regex.Parse( m_FormatExpression );

if( REPARSE_ERROR_OK == status )
{
   CAtlREMatchContext<> match;
   if( regex.Match( sData, &match ) )
   {
      result = true;
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-29 07:12:12

编辑:当我弄清楚这个问题时,完全改变了我的答案。

CAtlRegExp类不支持大括号{}中的重复计数;它使用这些重复计数来返回匹配对象。表达式中的54是必须匹配的文字字符。只是巧合的是,您正在测试的字符串中有一个5,而带有4的部分是可选的。这个表达式可以完美地工作:

代码语言:javascript
运行
复制
m_FormatExpression = "^\\d\\d\\d\\d\\d(-\\d\\d\\d\\d)?$"; 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4549004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档