qnsh
V2EX  ›  问与答

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

  •  
  •   qnsh · Feb 7, 2018 · 7485 views
    This topic created in 3192 days ago, the information mentioned may be changed or developed.

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

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

    7 replies  •  2018-02-08 14:56:03 +08:00
    ZhLTE
    ZhLTE
    Feb 7, 2018
    1
    ^/#/@[/S]+/#/@$
    songz
    songz
    Feb 7, 2018❤️1
    2
    (?!#|@|\+)([\d\w\W])
    Biwood
    Biwood
    Feb 7, 2018❤️1
    3
    (#|@)([^#@]+)\1

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

    Q2:#你好##234:wdwww#+@eeur_222@ 需要获取结果为你好,234:wdwww,eeur_222,求问如何实现
    A2:str.replace(/[#+@]+/g, ',').replace(/^,(.*),$/g, '$1')
    songz
    songz
    Feb 7, 2018❤️1
    6
    @songz #2
    @Biwood #3
    参考了 3 楼的,优化了下我自己的 2 楼,最终:
    (?!#|@|\+)([^#@]+)
    ZhLTE
    ZhLTE
    Feb 8, 2018❤️1
    7
    没注意审题
    应该是(#|@)([^#@]+)\1 你需要的应该是 \2
    ..和三楼一致-。-
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2740 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:25 · PVG 08:25 · LAX 16:25 · JFK 19:25
    ♥ Do have faith in what you're doing.