【问题标题】:Regex to match certain characters and exclude certain characters but without negative lookahead正则表达式匹配某些字符并排除某些字符但没有负前瞻
【发布时间】:2020-02-04 04:16:26
【问题描述】:

我想要一个匹配所有表情符号(或大多数表情符号)但排除某些字符(例如“|”|‘|’|…|—)的正则表达式。

This regex 通过负前瞻来完成这项工作:

/(?!\u201C|\u201D|\u2018|\u2019|\u2026|\u2014)(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/

但显然Google Scripts 不支持这一点。错误:

无效的正则表达式模式 (?!“|”|‘|’|…|—)(©|®|[ -㌀]|?[퀀-?]|?[퀀-?]|?[퀀-?])

还有其他方法可以实现我的目标(与Google Script's findText 一起使用的正则表达式)?

【问题讨论】:

    标签: javascript regex google-apps-script regex-lookarounds


    【解决方案1】:

    选项 1

    也许,

    [\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}\u{1f680}-\u{1f6ff}\u {2600}-\u{26ff}\u{2700}-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}\u{1f004}\u{ 1f0cf}\u{1f170}-\u{1f171}\u{1f17e}-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}\u{2934}- \u{2935}\u{2b05}-\u{2b07}\u{2b1b}-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}\u{ 00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}]

    对于您想要的表情符号可能工作正常。

    Demo

    选项 2

    否则,您可能希望使用 char 类来否定那些不需要的字符,例如:

    [these unicode ranges &&[^these unicodes]]
    

    这将变得相当复杂,但可能。

    选项 3

    使用此选项,您很可能会更简单地解决您的问题。我想,您的问题是那些不需要的标点符号已经在所需的 unicode 中。检查是否会出现这种情况。例如,在

    [\u100-\u200]
    

    您可能将 \u150 和 \u175 作为不需要的字符,您希望将它们从您已经拥有的所需 unicode 范围中删除。

    然后您可以简单地从范围中删除它们,例如:

    [\u100-\u149\u151-\u174\u176-\u200]
    

    只要问题解决就这么简单。

    来源

    javascript unicode emoji regular expressions

    【讨论】:

    • 感谢您的努力。我看到它在 regex101 中有效,但 不幸 在 Google Scripts 中给了我Invalid regular expression pattern [u{1f300}-u{1f5ff}u{1f900}-u{1f9ff}u{1f600}-u{1f64f}u{1f680}-u{1f6ff}u{2600}-u{26ff}u{2700}-u{27bf}u{1f1e6}-u{1f1ff}u{1f191}-u{1f251}u{1f004}u{1f0cf}u{1f170}-u{1f171}u{1f17e}-u{1f17f}u{1f18e}u{3030}u{2b50}u{2b55}u{2934}-u{2935}u{2b05}-u{2b07}u{2b1b}-u{2b1c}u{3297}u{3299}u{303d}u{00a9}u{00ae}u{2122}u{23f3}u{24c2}u{23e9}-u{23ef}u{25b6}u{23f8}-u{23fa}]。另外,如果它在 Scripts 中工作,我会很好奇 如何 你排除了 “|”|‘|’|…|— 个字符。
    • 我会给你一个赞成票,因为我没有足够清楚/强调我需要它在 Google Scripts 中工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多