【发布时间】:2018-02-14 18:06:30
【问题描述】:
我有一些包含三个点的字符串...但有时它们只包含一行中的两个点,或者一行中包含三个以上的点。我正在尝试检测点太多或太少的字符串。
此正则表达式有效,但仅适用于 Chrome:
/((?<![.])[.]{2}(?![.])|(?<![.])[.]{4,}(?![.]))/g
其他浏览器的 JavaScript RegExp 引擎不支持lookbehinds,根据我的阅读,我无法重写它以使lookbehind 成为lookahead,因为regex 已经具有lookahead。
也许我根本不需要基于 RegExp 的解决方案?不过我没看到。
字符串匹配模式:
I have too many dots....and that's a problem
................
...Hey, that's not going to work..
字符串不匹配模式:
Here's a big success ...and that's great!
0.30.
【问题讨论】:
-
您是在进行替换过程还是仅进行匹配?
-
翻转这个可能会简单得多,并且只匹配 do 连续包含 3 个点的字符串。你能用它来工作吗?
-
为什么不直接用
...替换所有 2+ 点的实例,例如 this:\.{2,}。我认为你只是在考虑整个场景。 -
哦,对了。我不认为他在搜索/替换,只是验证?问题不是 100% 确定。
-
@CAustin 我明白你的意思。我会等待OP发表评论。如果我假设它是一个简单的替换是错误的,我会删除我的答案,但我不明白为什么他们会尝试匹配位置而不是根据问题的主题/上下文替换字符。
标签: javascript regex regex-lookarounds