首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java模式转换为Javascript模式

问将Java模式转换为Javascript模式
EN

Stack Overflow用户
提问于 2014-11-04 21:51:07
回答 1查看 155关注 0票数 0

我有以下java模式。

^[ -~&&[^"'<>\\]]*$

基本上,这是从空格到~字符(来自ascii表)的所有内容,不包括双引号、单引号、角括号和反斜杠。

我想把它转换成Javascript模式,非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-04 21:58:15

我唯一能想到的方法就是负面展望:

代码语言:javascript
复制
var pattern = /^(?:(?!["'<>\\])[ -~])*$/;

如果负前瞻性(?!["'<>\\])与您不想要的字符之一匹配,则它将导致匹配失败。

如果您想对这两种语言保持相同的模式,那么这个模式也应该在Java中工作。

编辑-分解它:

  • 前面的^和尾部的$意味着整个模式必须匹配整个测试字符串。(这与Java版本相同。)
  • 外部(?: )分组称为“非捕获”组。使用简单括号的普通组也会工作,但我尝试养成使用非捕获组的习惯,而不需要做捕获部分。不管怎么说都不是问题。然而,它的要点是,我们需要将以下两个部分组合在一起,以便*操作符可以应用(更多下面)。
  • (?! )部分是负前瞻。这样做的目的是告诉匹配器查看前面的模式是否匹配,但是这样做时不通过模式“前进”。就像一个“偷看街角”的工具。因为它是负前瞻,如果模式匹配,则查找失败。这将防止模式匹配Java版本中排除的标点符号。
  • 在查找之后是JavaScript中的“所有7位ASCII字符”模式,减去结束符子子句(在JavaScript中不起作用)。
  • 负查找和“任意字符”模式的组合与*组合在一起,这意味着匹配器应该一次又一次地尝试将每个字符匹配到测试字符串的末尾。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26745708

复制
相关文章

相似问题

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