正则表达式,用于获取字符串或符号的开头

时间:2017-07-24 07:36:59

标签: javascript regex

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

输入效果如下所示:

sip:+19999999999@trunkgroup2:5060;user=phone <sip:+19999999999;tgrp=0180401;trunk-context=aaaa.aaaa.ca@10.10.10.100:8000;user=phone;transport=udp> <sip:19999999999;tgrp=0306001;trunk-context=aaaa.aaaa.ca@10.10.10.100:8000;transport=udp> <sip:+19999999999;tgrp=SMPPDIN;trunk-context=aaaa.aaaa.ca@10.10.10.100:8000;transport=udp>

几个小时后,我出现了这个正则表达式:/(\Wsip[:,+,=]+)(\w+)/g,但这不适用于第一个例子 - 因为在属性名称之前没有单词字符。

如何解析这两个案例 - <sip...sip..只有当它是字符串的开头时,才能修复此表达式。

我使用此函数提取siptgrp值。

2 个答案:

答案 0 :(得分:4)

success: function OnSuccess(response) { var str = response.d; var data = JSON.parse(str); var jsonObj = $.map(data, function(value, index) { return [value]; }); console.log(jsonObj ); } 替换为\W,然后使用

\b

或者,在字符串的开头匹配:

\b(sip[:+=]+)(\w+)

请参阅first regex demosecond regex demo

由于^\W?(sip[:+=]+)(\w+) 是一个与任何非单词字符匹配的消费模式(字母/数字/ \W以外的字符),因此您不会在字符串的开头匹配。 _字边界将在字符串的开头匹配,以防\b之前有非字char。

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

另请注意,字符类中的^匹配为文字\W?。如果你想用它来枚举字符,你应该删除它。

模式详情

  • , - 一个单词边界
    OR
  • , - 字符串开头
  • \b - 1或0(由于^量词)非单词字符(即字母/数字以外的字符和\W?

    < / LI>
  • ? - 第1组:_子字符串后跟一个或多个(sip[:+=]+)sip:字符

  • + - 第2组:一个或多个单词字符。

答案 1 :(得分:1)

开始使用行^并使<可选使用?

^<?(sip[:,+,=]+)(\w+)