首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlueDragon 7.1中的正则表达式允许$符号

BlueDragon 7.1中的正则表达式允许$符号
EN

Stack Overflow用户
提问于 2012-08-21 18:33:20
回答 2查看 119关注 0票数 0

我使用蓝龙的cfform验证:

代码语言:javascript
复制
<cfinput validateat="onServer" validate="regex" pattern="^[a-zA-Z0-9 ]+$"  name="COMPANYDBA" />

但这种模式并没有产生正确的结果。美元的标志有点问题:^[a-zA-Z0-9 ]+$

预期结果:无特殊字符

实际结果:没有特殊字符,只允许$符号

为什么在世界上这会允许一个美元符号的字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-22 23:11:30

这是一个老问题,但它被列为未回答的问题,因此这里有一个(过长的)答案来阻止这种情况(无论如何,只要有人提出这个问题)。

在BD7和OpenBD之间,cfform的源代码不太可能发生重大变化--因为现在几乎没有人建议使用cfform --下面是生成OpenBD的OBD代码:

http://websvn.openbd.org/websvn/filedetails.php?repname=OpenBD&path=%2Ftrunk%2Fsrc%2Fcom%2Fnaryx%2Ftagfusion%2Fcfm%2Fcfform%2FcfAbstractFormTag.java

这段代码告诉我们的是,在提供了属性之后,将输出一个带有后缀_CFFORMREGEX的隐藏表单字段,以测试该模式。

(尽管what__validateat="onserver"建议,这当然不是真正的服务器端验证,因此也是不使用cfform的另一个原因)。

提交后,将获取该表单字段并通过cfFormData.java文件使用:

http://websvn.openbd.org/websvn/filedetails.php?repname=OpenBD&path=%2Ftrunk%2Fsrc%2Fcom%2Fnaryx%2Ftagfusion%2Fcfm%2Fengine%2FcfFormData.java

如果您遵循它,最终通过com.nary.util.string.regexMatches运行该模式,该模式使用Apache检查其匹配:

http://websvn.openbd.org/websvn/filedetails.php?repname=OpenBD&path=%2Ftrunk%2Fsrc%2Fcom%2Fnary%2Futil%2Fstring.java

SINGLELINE_MASK的使用意味着^$将执行它们通常的内容匹配开始/结束(而不是行的开始/结束),而.包括换行符。

有了所有这些,我们可以明确地指出,如果提供的模式是^[a-zA-Z0-9 ]+$,那么$就不会被接受,所以必须有更多的原始问题比已经揭示的问题更多。

当然,不是担心所有的,最合适的解决方案是:停止使用cfform

对于正确的表单验证,有许多更好的选择,参见Charlie的list:Cf411.com/表格

票数 0
EN

Stack Overflow用户

发布于 2012-08-21 18:39:17

尝试分别使用\A\Z而不是^$

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

https://stackoverflow.com/questions/12060951

复制
相关文章

相似问题

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