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

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

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

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

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

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

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

    Q2:#你好##234:wdwww#+@eeur_222@ 需要获取结果为你好,234:wdwww,eeur_222,求问如何实现
    A2:str.replace(/[#+@]+/g, ',').replace(/^,(.*),$/g, '$1')
    songz
        6
    songz  
       2018-02-07 19:11:37 +08:00   ❤️ 1
    @songz #2
    @Biwood #3
    参考了 3 楼的,优化了下我自己的 2 楼,最终:
    (?!#|@|\+)([^#@]+)
    ZhLTE
        7
    ZhLTE  
       2018-02-08 14:56:03 +08:00   ❤️ 1
    没注意审题
    应该是(#|@)([^#@]+)\1 你需要的应该是 \2
    ..和三楼一致-。-
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   960 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:27 · PVG 05:27 · LAX 14:27 · JFK 17:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.