Javascript 获取字符串或符号开头的正则表达式

Javascript 获取字符串或符号开头的正则表达式,javascript,regex,Javascript,Regex,我正在编写一个函数,从给定的字符串和给定的属性名称中查找属性值 输入Sting如下所示: sip:+19999999999@trunkgroup2:5060;用户=电话 几个小时后,我得出了以下正则表达式:/(\Wsip[:,+,=]+)(\w+)/g,但这对第一个示例不起作用,因为属性名称前没有单词字符 如何修复此表达式以获取这两种情况-将\W替换为\b,并使用 \b(sip[:+=]+)(\w+) 或者,要在字符串开头匹配: ^\W?(sip[:+=]+)(\w+) 请参阅和 由于\W

我正在编写一个函数,从给定的字符串和给定的属性名称中查找属性值

输入Sting如下所示:

sip:+19999999999@trunkgroup2:5060;用户=电话

几个小时后,我得出了以下正则表达式:
/(\Wsip[:,+,=]+)(\w+)/g
,但这对第一个示例不起作用,因为属性名称前没有单词字符


如何修复此表达式以获取这两种情况-
\W
替换为
\b
,并使用

\b(sip[:+=]+)(\w+)
或者,要在字符串开头匹配:

^\W?(sip[:+=]+)(\w+)
请参阅和

由于
\W
是一种消费模式,与任何非单词字符(字母/数字/
\u
以外的字符)匹配,因此字符串开头将没有匹配项。如果在
s
之前有非单词字符,则
\b
单词边界将在字符串开头匹配

如果您需要在可选非单词字符后的字符串开头找到匹配项,则必须将
\W
替换为
^\W?
,其中
^
匹配字符串开头,并且
\W?
匹配1或0个非单词字符

另外,请注意,字符类中的
与文本
匹配。如果您想使用它来枚举字符,那么应该删除它

图案细节

  • \b
    -单词边界

  • ^
    -字符串的开头
  • \W?
    -1或0(由于
    量词)非单词字符(即除字母/数字和
    \u以外的字符)

  • (sip[:+=]+)
    -第1组:
    sip
    子字符串,后跟一个或多个
    +
    =
    字符

  • (\w+)
    -第2组:一个或多个单词字符

用于行的开头,使用
^
并将
替换为
\W
(字边界)。请参阅。使用“一个或无”条件
。谢谢!我确实在某个阶段删除了
,但看起来我没有复制最新的表达式。我仍然使用了
\b
。我使用传递给函数的参数创建正则表达式字符串。参数为
sip
tgrp
。在这种情况下,
^\W?(sip[:+=]+)(\W+)
将不起作用。@Bobbie So,我从一开始就正确,您希望在任何非单词字符后或字符串的开头匹配字符串。谢谢你让我知道。
^<?(sip[:,+,=]+)(\w+)