V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
qnsh
V2EX  ›  问与答

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

  •  
  •   qnsh · Feb 7, 2018 · 7076 views
    This topic created in 3003 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
        1
    ZhLTE  
       Feb 7, 2018
    ^/#/@[/S]+/#/@$
    songz
        2
    songz  
       Feb 7, 2018   ❤️ 1
    (?!#|@|\+)([\d\w\W])
    Biwood
        3
    Biwood  
       Feb 7, 2018   ❤️ 1
    (#|@)([^#@]+)\1

    需要二重匹配,一次搞不定
    noe132
        4
    noe132  
       Feb 7, 2018   ❤️ 1
    > '#你好##234:wdwww#+@eeur_222@'.match(/#(.+?)#|@(.+?)@/g)
    < ["#你好#", "#234:wdwww#", "@eeur_222@"]
    luoway
        5
    luoway  
       Feb 7, 2018   ❤️ 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  
       Feb 7, 2018   ❤️ 1
    @songz #2
    @Biwood #3
    参考了 3 楼的,优化了下我自己的 2 楼,最终:
    (?!#|@|\+)([^#@]+)
    ZhLTE
        7
    ZhLTE  
       Feb 8, 2018   ❤️ 1
    没注意审题
    应该是(#|@)([^#@]+)\1 你需要的应该是 \2
    ..和三楼一致-。-
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3128 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:18 · PVG 22:18 · LAX 07:18 · JFK 10:18
    ♥ Do have faith in what you're doing.