首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
宝塔
V2EX  ›  问与答

js 正则匹配以某字符开始和结束的问题

  •  
  •   qnsh · 2018-02-07 16:01:24 +08:00 · 3719 次点击
    这是一个创建于 653 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在需要正则表达式匹配以#或者 @开始并且以#或者 @结束的字符,例如#你好##234:wdwww#[email protected][email protected]

    需要获取结果为你好,234:wdwww,eeur_222,求问如何实现。

    7 回复  |  直到 2018-02-08 14:56:03 +08:00
        1
    ZhLTE   2018-02-07 16:06:27 +08:00
    ^/#/@[/S]+/#/@$
        2
    songz   2018-02-07 16:58:08 +08:00   ♥ 1
    (?!#|@|\+)([\d\w\W])
        3
    Biwood   2018-02-07 17:18:26 +08:00   ♥ 1
    (#|@)([^#@]+)\1

    需要二重匹配,一次搞不定
        4
    noe132   2018-02-07 17:29:37 +08:00   ♥ 1
    > '#你好##234:wdwww#[email protected][email protected]'.match(/#(.+?)#|@(.+?)@/g)
    < ["#你好#", "#234:wdwww#", "@[email protected]"]
        5
    luoway   2018-02-07 17:35:37 +08:00   ♥ 1
    Q1:正则表达式匹配以#或者 @开始并且以#或者 @结束的字符
    A1:str.replace(/^(?:#|@)(.*)(?:#|@)$/g, '$1')

    Q2:#你好##234:wdwww#[email protected][email protected] 需要获取结果为你好,234:wdwww,eeur_222,求问如何实现
    A2:str.replace(/[#[email protected]]+/g, ',').replace(/^,(.*),$/g, '$1')
        6
    songz   2018-02-07 19:11:37 +08:00   ♥ 1
    @songz #2
    @Biwood #3
    参考了 3 楼的,优化了下我自己的 2 楼,最终:
    (?!#|@|\+)([^#@]+)
        7
    ZhLTE   2018-02-08 14:56:03 +08:00   ♥ 1
    没注意审题
    应该是(#|@)([^#@]+)\1 你需要的应该是 \2
    ..和三楼一致-。-
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1213 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 17:54 · PVG 01:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.