![](/img/trans.png)
[英]How to match sth. "preceeded / followed by" something with regular expression?
[英]match something not followed AND preceded by something
我想匹配每個“e”字符,它不是科學 e 符號(例如 3e+6)的一部分,用括號括起來。 我可以毫無問題地做相反的事情: /(?<=\\(\\d)e(?=[+-]\\d+\\)/)
問題是,如果我嘗試這樣做( /(?<!\\(\\d+)e(?![+-]\\d+\\))/
),一旦第一部分或最后一部分不匹配,它就不會匹配匹配(不是和)。
簡而言之,它應該與 e 匹配:
23e+4
4e
e
e+5)
(4e
但不在:
(23e+5)
(或匹配任何與此/\\(\\d+e[+-]\\d+\\)/
匹配的/\\(\\d+e[+-]\\d+\\)/
)
先感謝您 :)
由於您的原始模式是
\(\d+e[+-]\d+\)
要反轉這種邏輯,您可以交替使用:
\\(\\d+
負向后視,然后是e
的匹配,以及e
,然后是[+-]\\d+\\)
的負前瞻:(?<!\(\d+)e|e(?![+-]\d+\))
非正則表達式解決方案可以是這樣的
(
以)
開頭,然后返回 falsee
或相應地返回布爾值 let arr = [`23e+4`,`4e`,`e`,`e+5)`,`(4e`,`(23e+5)`] let checker = v => v.startsWith('(') && v.endsWith(')') ? 'false' : v.includes('e') arr.forEach(v => console.log(checker(v)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.