java - 用于在 JavaScript 中查找 Java 格式字符串的正则表达式

标签 java javascript android regex string-formatting

在 Java/Android 中,您可以使用格式字符串来指定某些 outlook 的预期外观。例如,这些格式字符串可以传递给 String.format()Formatter()

简单的例子是 %s%1$d

现在我想编写一个在 JavaScript 中运行的正则表达式,并允许您从给定的文本中提取 Java 的格式字符串。

我的解决方案是以下 RegEx:

%(([0-9]+\$)?)([,+ (\-#0]*)([0-9]*)(.[0-9]*)((hh|h|l|ll|L|z|j|t)*)(d|i|u|f|F|e|E|g|G|x|X|o|s|S|c|C|a|A|b|B|h|H|p|n|%)

但是,这甚至不适用于最简单的情况 (%s)。但它似乎适用于所有其他(更复杂的)情况。

我在这里要问的是:您认为这是一个好的(正确的)RegEx 还是缺少任何内容?

我的语法来源是:Android's Formatter classprintf format strings

最佳答案

问题出在这组:(.[0-9]*)

您首先期望 %,然后上面组中的 . 期望其中一个(不是可选的)。然后 (d|i|u|f|F|e|E|g|G|x|X|o|s|S|c|C|a|A|b|B|h|H|p |n|%) 也在期待一些事情。

所以基本上您的正则表达式中仅有的必需项是:
1. %
2. (.[0-9]*)
中的. 3. (d|i|u|f|F|e|E|g|G|x|X|o|s|S|c|C|a|A|b|B|h|H| p|n|%)

%s 中没有空间来容纳 %. 以及您要拉取 s

我不确定你到底想要什么 (.[0-9]*) 是什么,但是让它像 (.[0-9]*)? 至少允许 %s 通过。

关于java - 用于在 JavaScript 中查找 Java 格式字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304896/

相关文章:

java - jackson 不承认存在的领域

java - 找不到 Array.equal(charAt)

java - 以编程方式编辑图像以供拼图使用

javascript - 在 React JS 中验证不正确时如何更改文本框的颜色

java - 使用房间数据库存储枚举即使使用 TypeConverters 也会出错

android - 如何更改 viewpagerindicator 选项卡上的选项卡背景?

java - 如何修复Java中的 'Bound mismatch'

javascript - Electron:如何安全地将全局变量注入(inject) BrowserWindow/BrowserView?

javascript - 灵活的图像表

Android:我的应用程序使用了多少内存?