Regex用于查找Java's在JavaScript中格式化字符串
Regex for finding Java's format strings in JavaScript
在Java/Android中,您可以使用Format字符串来指定一些outlook的外观。例如,这些Format字符串可以传递给String.format()
或Formatter()
。
简单的例子是%s
或%1$d
。
现在,我想写一个RegEx,它可以在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的Formatter类和printf格式字符串
问题出在这个组:(.[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
通过。
相关文章:
- 使用纯javascript格式化数字
- 如何用javascript格式化日期
- 用javascript格式化数字,而不进行更改
- 如何用javascript格式化(大)数字
- 如何使用javascript格式化同一类表列中的数据
- JavaScript:格式化输入方法会给出错误的值
- Javascript-格式化数字,始终显示原始的小数位数
- 用javascript格式化/操作JSON响应
- 使用 javascript 格式化数字
- 使用 JavaScript 格式化日期
- JavaScript 格式化时间 24 小时格式为 12 小时
- 使用 JavaScript 格式化附加文本
- JavaScript - 格式化长整数
- 在一个文件中使用 JavaScript 格式化 XML 数据
- 来自 Date() 对象的 JavaScript 格式化时间
- 使用 javascript 格式化日期字符串
- 如何使用javascript格式化从表单字段中提取的日期
- 如何用javascript格式化日期
- 用JavaScript格式化动态表
- 用Javascript格式化数组循环的日期输出