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