-2

我想使用正则表达式在字符串中查找确切的电话号码,但我不想按格式查找,例如012-345-67-89, 012-3456789, 012-345-6789

为此,我可以使用例如:[0-9]{3}(-?)[0-9]{3}(-?)[0-9]{4}.

我需要一个正则表达式,如果用户输入:0-12345678-9由于某种原因,如果我正在寻找的内容是:,我仍然可以找到我正在寻找的确切数字:0123456789

所以基本上我需要一个表达式来找到一个数字,不管它的位置如何-,如果它甚至存在的话。

而且我需要我正在寻找的号码保持完整而不是分开,例如:/(0123456789)/而不是:/(012(-?)3456789)/,所以我可以动态输入该号码。

谢谢 :)

4

4 回答 4

1

您在这里要求的内容需要某种可识别的模式来构成您的电话号码。

如果我正确阅读了您的问题和您对其他答案的评论,那么应该这样做: /[^\d\s]?(\d+[^\d]?)+\d+/mg

这是细分:

  1. [^\d\s]?表示可能有 0 或 1 个非数字、非空白首先。这会捕获国家代码等
  2. (\d+[^\d]?)+是一个重复捕获组,其中必须至少存在一个匹配项。这意味着一定数量的数字字符可能被 1 个非数字字符分隔。
  3. \d+是结束捕获,它必须以一定数量的数字字符结束。
  4. mgflags 表示多行的多个结果。这可能是也可能不是您想要的。

这是一个简单的实现:

function GetPhoneNumber(text) {
  let match = text.match(/[^\d\s]?(\d+[^\d]?)+\d+/mg);
  if (match !== null) {
    return match.map(textPart => textPart.replace(/\D/mg, ''));
  }
  return [];
}
const tests = [
  'Text here 0-123456-78-9 mor text!',
  '012-345-67-89',
  '012-3456789',
  '012-345-6789',
  'no number',
  'two numbers: +01 25 35 88888 and +02 25 35 88888',
];
tests.forEach(test => {
  console.log({
    test: test,
    numbers: GetPhoneNumber(test)
  });
});

于 2021-04-07T09:32:20.683 回答
0

你应该能够做这样的事情来删除任何不是数字的东西

str = "0-12345678-9";
str = str.replace(/[^\d]/g, '');
console.log(str);
str2 = "Text here 0-123456-78-9 mor text!";
str2 = str2.replace(/[^\d]/g, '');
console.log(str2);

于 2021-04-07T09:00:49.013 回答
0

首先从干草堆和针中删除所有非数字,然后检查是否相等

const input1 = 'Here in this text is this phone number ++1-555-4838192.'
const input2 = 'Here in this text is this phone number ++1-555-1239064.'

const needle = '15551239064' // matches the phone number in input 2

const checkPhoneNumber = (input, needle) => input.replace(/\D/g, '') == needle.replace(/\D/g, '')


console.log(checkPhoneNumber(input1, needle))
console.log(checkPhoneNumber(input2, needle))

于 2021-04-07T09:18:30.607 回答
-1

据我所知,您只想从输入字符串中删除“-”(如果有的话)。

如果是这种情况,这是您的解决方案:

var _string = "12213-233-112"
var _new_string = _string.split("-").join("")
console.log(_new_string) // Output: "12213233112"
于 2021-04-07T09:01:08.320 回答