Javascript 如何正则表达式多变量

Javascript 如何正则表达式多变量,javascript,regex,Javascript,Regex,我试图对此进行正则化,但它不起作用: 这是我的字符串: asdasd2-bgbegebr23-yiyity23-iopip123 因此,我尝试获取“-”之间的所有值,但它不起作用:我实际使用的是: /(-)(.*)(-)/gi 作为正则表达式,但不起作用,谢谢大家:这是因为圆点包含了破折号。你应该拆下破折号。试试这个: /([^-]+)/gi这是因为圆点包括破折号。你应该拆下破折号。试试这个: /([^-]+)/gi我不太明白正则表达式的用途。假设您要设计一个正则表达式,该正则表达式在上迭代

我试图对此进行正则化,但它不起作用:

这是我的字符串:

asdasd2-bgbegebr23-yiyity23-iopip123
因此,我尝试获取“-”之间的所有值,但它不起作用:我实际使用的是:

/(-)(.*)(-)/gi

作为正则表达式,但不起作用,谢谢大家:这是因为圆点包含了破折号。你应该拆下破折号。试试这个:


/([^-]+)/gi

这是因为圆点包括破折号。你应该拆下破折号。试试这个:


/([^-]+)/gi

我不太明白正则表达式的用途。假设您要设计一个正则表达式,该正则表达式在上迭代,示例字符串依次获得asdasd2、bgbeger23等,正则表达式如下所示:

\-?([^\-]*)\-?
\\-?[^\\-]*)\\-?
为什么??

  • -:必须使用“-”而不是“-”,因为连字符是正则表达式的特殊字符,所以必须对其进行转义
  • ?:连字符是可选的:在第一种情况下(asdasd2),它不存在。因此,强制执行它将省略第一个案例
  • ():分组以捕获所有asdsas2和字母数字内容
  • [^-]:除连字符外的所有内容。我认为@vks(.*)的近似值也适用
  • -:再次使用连字符,但已转义。我们不能忘记结尾的“?”,因为示例字符串的最后一个大小写不是以连字符结尾的
  • 不要忘记,如果使用javascript,可能需要替换反斜杠(),从而产生如下表达式:

    \-?([^\-]*)\-?
    
    \\-?[^\\-]*)\\-?
    

    我不太明白你的正则表达式的用途。假设您要设计一个正则表达式,该正则表达式在上迭代,示例字符串依次获得asdasd2、bgbeger23等,正则表达式如下所示:

    \-?([^\-]*)\-?
    
    \\-?[^\\-]*)\\-?
    
    为什么??

  • -:必须使用“-”而不是“-”,因为连字符是正则表达式的特殊字符,所以必须对其进行转义
  • ?:连字符是可选的:在第一种情况下(asdasd2),它不存在。因此,强制执行它将省略第一个案例
  • ():分组以捕获所有asdsas2和字母数字内容
  • [^-]:除连字符外的所有内容。我认为@vks(.*)的近似值也适用
  • -:再次使用连字符,但已转义。我们不能忘记结尾的“?”,因为示例字符串的最后一个大小写不是以连字符结尾的
  • 不要忘记,如果使用javascript,可能需要替换反斜杠(),从而产生如下表达式:

    \-?([^\-]*)\-?
    
    \\-?[^\\-]*)\\-?
    

    (*)(*?)(-)
    ….您如何定义“所有值”-在您的示例中,您希望获得
    bgbgeb23-yiyiyity23
    bgbgeb23
    yiyiyiyity23
    asdasd2
    bgbgeb23
    yiyiyiyiyity23
    iopip123
    ?您可以使用
    string.split('delimiter'))
    如果这是一个选项。比regexyes更简单更清晰,它可以工作,谢谢你dlkulp
    (.*?)(
    )。你如何定义“所有值”——在你的例子中,你想得到
    bgbeger23-yiyiyity23
    还是
    bgbeger23
    yiyiyiyity23
    或者
    asdasd2
    bgbeger23
    yiyity23
    iopip123
    ?如果这是一个选项,您可以使用
    string.split('delimiter')
    。比regexyes更简单更清晰,它可以工作,谢谢DLKULP这是最简单的解决方案是的。但是,它相当于执行str.split(“-”),这往往更容易处理。此外,OP提到他希望破折号之间的匹配。我不知道他的确切要求,但这可能会比OP想要的更多(包括第一项和最后一项)。这是最简单的解决方案是的。但是,它相当于执行str.split(“-”),这往往更容易处理。此外,OP提到他希望破折号之间的匹配。我不知道他的确切要求,但这可能会返回比OP想要的更多的内容(包括第一项和最后一项)。
    连字符是正则表达式的特殊字符
    不,不是。无论如何,不在这些位置-它仅在
    []
    内部是特殊的,并且仅当它可以解释为一个范围时,例如
    [0-9]
    。然而,在方括号外或在开始/结束时,它将永远不会被认为是特殊的<代码>强制执行它将省略第一个案例那么,你确定OP不想这样吗?如中所述,他实际上可能想省略第一个案例
    如果使用正则表达式文字,则可能需要替换反斜杠
    。谢谢你,伙计,我一点也不明白这个->连字符是什么意思,但是谢谢你使用这个:而且不起作用:var r=/([^-]+)/gi.exec(“intro-verse1-verse2-chorus1-intro-verse1-verse2-chorus1-chorus2-bridge-bridge-chorus1-chorus2-intro”)@AlbertoAcuñtry
    string.match(/([^-]+)/g)
    -这将为您提供所有单词。但是,如果没有正则表达式,则更简单:
    string.split(“-”)
    连字符是正则表达式的特殊字符
    不,它不是。无论如何,不是在这些位置上-它只是在
    []内部特别
    并且仅当它可以解释为一个范围时,例如
    [0-9]
    。然而,在方括号外或方括号内以及开始/结束时,它永远不会被认为是特殊的。
    强制执行它将忽略第一个案例
    好吧,你确定这不是OP想要的吗?就像在中一样,他可能真的想忽略第一个案例。
    如果你使用正则表达式,你可能需要替换反斜杠文字。你可以在字符串中使用,但是文字现在是错误的。谢谢你,伙计,我根本不明白这是什么意思->连字符,但是谢谢你使用这个:而且不起作用:var r=/([^-]+)/gi.exec(“intro-verse1-verse2-chorus1-intro-verse1-verse2-chorus1-chorus2-bridge-bridge-cho