当前位置:  开发笔记 > 编程语言 > 正文

使用regex从输入字段验证sprintf格式

如何解决《使用regex从输入字段验证sprintf格式》经验,为你挑选了1个好方法。

我有一个输入字段,可以输入常规文本和sprintf标记.

例: some text here. %1$s done %2$d times

我如何验证sprintf部件,以便它们不可能出错%$1s?文本是utf-8,据我所知,正则表达式只匹配latin-1字符.

www.regular-expressions.info没有列出/u任何地方,我认为这用于告诉字符串是unicode.

是搜索整个输入字段字符串的最佳方法,%或者$如果找到,则应用正则表达式来验证sprintf部分?

我认为正则表达式将是: /%\d\$(s|d|u|f)/u



1> NkM..:

我最初使用Gumbo的正则表达式来解析sprintf指令,但在尝试解析像%1.2f这样的东西时我立即遇到了问题.我最终回到PHP的sprintf手册并根据其规则编写了正则表达式.到目前为止,我不是一个正则表达式专家,所以我不确定这是否是最干净的写作方式:

/%(?:\d+\$)?[+-]?(?:[ 0]|'.{1})?-?\d*(?:\.\d+)?[bcdeEufFgGosxX]/

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有