我有以下java模式。
^[ -~&&[^"'<>\\]]*$
基本上,这是从空格到~字符(来自ascii表)的所有内容,不包括双引号、单引号、角括号和反斜杠。
我想把它转换成Javascript模式,非常感谢您的帮助。
发布于 2014-11-04 21:58:15
我唯一能想到的方法就是负面展望:
var pattern = /^(?:(?!["'<>\\])[ -~])*$/;如果负前瞻性(?!["'<>\\])与您不想要的字符之一匹配,则它将导致匹配失败。
如果您想对这两种语言保持相同的模式,那么这个模式也应该在Java中工作。
编辑-分解它:
^和尾部的$意味着整个模式必须匹配整个测试字符串。(这与Java版本相同。)(?: )分组称为“非捕获”组。使用简单括号的普通组也会工作,但我尝试养成使用非捕获组的习惯,而不需要做捕获部分。不管怎么说都不是问题。然而,它的要点是,我们需要将以下两个部分组合在一起,以便*操作符可以应用(更多下面)。(?! )部分是负前瞻。这样做的目的是告诉匹配器查看前面的模式是否匹配,但是这样做时不通过模式“前进”。就像一个“偷看街角”的工具。因为它是负前瞻,如果模式匹配,则查找失败。这将防止模式匹配Java版本中排除的标点符号。*组合在一起,这意味着匹配器应该一次又一次地尝试将每个字符匹配到测试字符串的末尾。https://stackoverflow.com/questions/26745708
复制相似问题