首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFFORM Regex无法正确验证

CFFORM Regex无法正确验证
EN

Stack Overflow用户
提问于 2013-11-12 04:21:30
回答 1查看 97关注 0票数 0

我有一个旧的表单,它仍然必须使用cfform来进行客户端验证。

我还得到了一个用于验证的正则表达式模式,并且我正在尝试验证电话号码字符串。

代码语言:javascript
复制
<cfinput class="form-field" required="yes" value="#session.userdetails.shipping.deliveryaddress.telephoneNumber#" message="Please Enter your Phone Number" name="telephoneNumber" type="text"  id="PhoneNumber" validate="regex" pattern="^[0-9\.\-' ']+$"  maxlength="25" size="26" />

我尝试了许多不同的模式来验证特定格式的字符串。

我需要它是最少7个字符,它可以包含空格必须是数字

代码语言:javascript
复制
^[0-9\.\-' ']{7}+$
^[0-9\.\-' ']{7,}+$

为什么这不符合我的需求,你有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-03 22:42:13

“为什么这不符合我的需求,你有什么想法吗?”

因为您正在使用的regex包含JS不支持的语法-如果您查看浏览器控制台,您将在尝试验证时看到一个错误。(您可能需要选择“持久化”选项才能看到它。)

您的错误在于,您要么将两个量词放在一起,要么可能已经看到了所谓的所有格量词并尝试使用它(但JS不支持它们)。

解决方案是简单地使用{7,} + after it,您的模式将几乎按预期工作:不需要字符类中空格周围的引号(并且特别允许该字符),并且点不需要在字符类中进行转义-因此您需要的模式是^[0-9.\- ]{7,}$^[\d .-]{7,}$

作为对所有格量词与其他类型的比较的快速说明:

  • x{7,}是一个具有贪婪代码行为的量词,这意味着它尽可能多地匹配x,但至少七次
    • x{7,}是一个具有占有性代码行为的量词,这意味着它与x匹配的次数与找到的代码一样多,但至少七次required.
    • x{7,}?是一个具有惰性<>E234>行为的量词,这意味着它尝试匹配x七次。在那之后,match.
    • x+是的缩写,你可以使用x++x+?来改变默认的贪婪量词。

同样,JS和CF使用的regex实现不支持所有格限定符(这就是无效语法的原因),但它们确实支持贪婪(默认)和懒惰。

占有和贪婪之间的区别可能看起来很微妙--对于你所拥有的单项模式来说,它实际上并没有生效--但它可以在执行中产生非常显著的差异……但这偏离了核心答案的轨道,所以我就到此为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19915190

复制
相关文章

相似问题

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