使用正则表达式从字符串中提取数字部分工作

Number extraction from string using regex working partially

本文关键字:提取 数字部 工作 字符串 正则表达式      更新时间:2023-09-26

我正在使用JavaScript从推文中提取以9开头、后跟其他9位数字的电话号码。

以下是我正在使用的正则表达式模式:

var numberPattern = /^9[0-9]{9}/;

这是模式匹配阶段:

var numberstring = JSON.stringify(data[i].text);
        if(numberPattern.test(data[i].text.toString()) == true){
          var obj={
            tweet : {
                status : data[i].text
            },
            phone : numberstring.match(numberPattern)
          }
          //console.log(numberstring.match(numberPattern));
          stringarray.push(obj);

问题是,它只适用于少数数字,而不是所有数字。此外,我想修改正则表达式,使其也接受数字的+91前缀,并(或(拒绝数字中的0开头。我是regex的初学者,所以需要帮助。谢谢

示例:

#Chennai O-ve blood for @arun_scribbles 's friend's father surgery in few days. Pl call 9445866298. 15May. via @arun_scribbles

您的正则表达式模式似乎被设计为允许在开头使用9或8,但最好将该选项括在括号中:/^(9|8)[0-9]{9}/

要允许在开头使用可选的"+",请在后面加一个问号使其可选:/^'+?(9|8)[0-9]{9}/

若要允许除"0"之外的任何字符,请将(9|8)替换为仅接受1-9:/^'+?[1-9][0-9]{9}/的构造。

在您的示例中,电话号码不在行的开头,因此插入符号找不到它。如果您要在行的中间查找内容,则需要删除插入符号:/'+?[1-9][0-9]{9}/

var numberPattern = /([+]91)?9[0-9]{9}'b/;

试试这个正则表达式模式:['+]?[0-9]{1,4}['s]?[0-9]{10}

它接受任何带有+space和10位数字的国家代码。