Google应用脚本正则表达式电话

时间:2016-04-27 15:10:45

标签: javascript regex google-apps-script

有这样的代码: https://github.com/dezostus/googleapp/blob/master/z_draft/email%20parce(test).gs

这个正则表达式的问题这一部分:

.match(/Phone:^((8|\+)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/);
.match(/Comment:\s*([\s\S]+)(?=Email|Phone)/);

手机不会返回任何东西..真的很多东西,但最后没有任何作用。可能的掩码是:

12361234567
8029123456
+12361234567
+375 29 123 45 67
4(123)123-45-67
123-45-67
9261234567

评论适用于:

Comment: ТestABC1234567 Ads
Phone: +313239084
or
Comment: ТestABC1234567 Ads
Email: asd@gmail.com

但是当这样的模板:

Comment: ТestABC1234567 Ads
Phone: +313239084
Email: asd@gmail.com

它返回:

ТestABC1234567 Ads
Phone: +313239084

将不胜感激任何变种如何解决这个问题

2 个答案:

答案 0 :(得分:2)

我宁愿使用

/Phone:\s*((?:[48+][- ]?)?(?:\(?\d{3}\)?[- ]?)?[\d -]{7,10})/

请参阅regex demo

我添加4作为开头可能的替代(其中一个数字以4开头)。所以,我使用[48+]48+)。

我删除了不必要的转义符号,无需在字符类的初始或最终位置转义连字符。

我删除了还原剂捕获组或转为非捕获组,并设置了您需要的1个捕获组,用于存储实际数量(它将是第1组)。

我还删除了锚点,它们只能与/m修饰符一起使用,因为输入是多行的。但是,可能存在前导尾随空格。如果您真的想保留^$,请尝试/^\s*Phone:\s*((?:[48+][- ]?)?(?:\(?\d{3}\)?[- ]?)?[\d -]{7,10})\s*/m

答案 1 :(得分:2)

由于Wiktor已经解决了您的第一个问题,因此这是您第二个问题的可能解决方案:

/Comment:\s*([\s\S]+?)(?=(?:Phone|Email))/

但是,如果您的评论中出现电子邮件电话字样,则需要使用以下内容,假设Phone和{{1条目总是从换行符开始:

Email

Regex101



/Comment:\s*([\s\S]+?)(?=(?:\nPhone|\nEmail))/