用于从父字符串中识别和提取两个不同字符串的正则表达式

时间:2018-11-15 10:59:18

标签: javascript regex

我有以下字符串:your lead count is @_sfdc.Account.phonenumber.value, you are having @_hrms.leaves.leavescount per year

我要从中获取@_sfdc.Account.phonenumber.value@_hrms.leaves.leavescount。即使在这种情况下我们有多个以上的点,它也应该获取所有点分隔的字符串。

目前,我已经尝试过以下正则表达式:/@_sfdc.([a-zA-Z]).+/g;

2 个答案:

答案 0 :(得分:0)

/@_[\w\.]+/g

这与“ @_”匹配,后跟字母,数字或点(.)的任意序列。

答案 1 :(得分:0)

您在正确的道路上,几乎在那儿!这里的主要错误是.是正则表达式中的保留字符,表示“任何字符”。要真正匹配点字符,您需要使用反斜杠对其进行转义:\.

因此,您的正则表达式变为/@_sfdc\.([a-zA-Z])\.+/g

要注意的另一件事是,您想匹配同一组中的字母和点,而当前表达式则要求匹配以点结尾。 因此,让我们在匹配的组方括号内移动该点: /@_sfdc\.([a-zA-Z\.])+/g

也说您要同时匹配@_sfdc@_hrms前缀,所以让我们对其进行更改。 有两种方法可以做到这一点:

  • 专门针对@_sfdc@_hrms/@_(sfdc|hrms)\.([a-zA-Z\.])+/g
  • 或匹配以@_开头的任何字符串:/@_([a-zA-Z\.])+/g。在这种情况下,hrms.sfdc.由捕获其余字符串([a-zA-Z\.]+)的同一块捕获。