在JavaScript中从字符串提取一个包含10位数字的手机号码的正则表达式:

huangapple go评论113阅读模式
英文:

Regular expression to extract a 10 digit mobile number from string in javascript

问题

我希望验证我的输入参数是否是一个包含10位数字的电话号码,即使输入中包含其他文本。

我尝试过以下代码:

  1. numbemail("my number is 0987654321")
  2. function numbemail(data){
  3. var input = data;
  4. var numb = new RegExp(
  5. "\\+?\\(\\d*\\)? ?\\(\\d+\\)?\\d*([\\s\\-.]?\\d{2,})+", "g"
  6. );
  7. var numbresult = input.match(numb);
  8. if(numbresult){
  9. var re = []
  10. if(numbresult[0].length === 10){
  11. re.push(numbresult[0])
  12. } else if(numbresult[0].length < 10) {
  13. re.push(numbresult[0] + " ==> (WrongNumber: you provided Number is less than 10 digits)</p>")
  14. } else if(numbresult[0].length > 10) {
  15. re.push(numbresult[0] + " ==> (WrongNumber: you provided Number is more than 10 digits)</p>")
  16. }
  17. console.log(re)
  18. }
  19. }

当我尝试这个代码时,期望得到10位数字,但我得到了numbresult[0].length=11

如果我使用一个包含10位数字的字符串,那么numbresult[0].length=10

期望输入:

  1. input = ("my mobile number is 9087654321")

期望输出:

  1. "9087654321"
英文:

I wish to validate if my input argument is a 10 digit phone number, even if there is additional text in the input.

I have tried this:

  1. numbemail(&quot;my numberis 0987654321&quot;)
  2. function numbemail(data){
  3. var input =data;
  4. var numb = new RegExp(
  5. &quot;\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s\\-.]?\\d{2,})+&quot;, &quot;g&quot;
  6. );
  7. var numbresult = input.match(numb);
  8. if(numbresult){
  9. var re=[]
  10. if(numbresult[0].length === 10){
  11. re.push(numbresult[0])
  12. } else if(numbresult[0].length &lt; 10) {
  13. re.push(numbresult[0]+&quot; ==&gt;(WrongNumber: you provided Number is less than 10 digits)&lt;/p&gt;&quot;)
  14. } else if(numbresult[0].length &gt; 10) {
  15. re.push(numbresult[0]+&quot; ==&gt; (WrongNumber: you provided Number is more than 10 digits)&lt;/p&gt;&quot;)
  16. }
  17. console.log(re)
  18. }
  19. }

When I tried this expecting 10 digits, but I got numbresult[0].length= 11

If I used a 10 digit string, then numbresult[0].length= 10

Expected Input:
>input = ("my mobile number is 9087654321")

Expected Output:
>"9087654321"

答案1

得分: 1

尝试这个:

  1. var regex = /[\+]?\d{10}/
  2. let strings = ['my numberis 0987654321', 'my number 8 is 9087654321', 'my number 8 is 9087654321123', 'my number 8 is 9087654']
  3. strings.forEach(str => {
  4. let output = str.match(regex)
  5. if(output){
  6. console.log('number is valid', output[0])
  7. return
  8. }
  9. console.log('number is not valid - kindly enter 10 digit mobile number', output)
  10. })

注意:此代码是JavaScript代码示例,用于匹配字符串中的10位数字。

英文:

Try this one

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. var regex = /[\+]?\d{10}/
  2. let strings = [&#39;my numberis 0987654321&#39;, &#39;my number 8 is 9087654321&#39;, &#39;my number 8 is 9087654321123&#39;, &#39;my number 8 is 9087654&#39;]
  3. strings.forEach(str =&gt; {
  4. let output = str.match(regex)
  5. if(output){
  6. console.log(&#39;number is valid&#39;, output[0])
  7. return
  8. }
  9. console.log(&#39;number is not valid - kindly enter 10 digit mobile number&#39;, output)
  10. })

<!-- end snippet -->

答案2

得分: 0

尝试简化你的正则表达式。你为简单的任务写了太复杂的代码。

  1. let input = "my numberis 0987654321";
  2. // 过滤可以分隔电话号码数字的符号
  3. input = input.split(" ").join("").split("-").join("");
  4. let phoneNumber = input.match(/\d{10,}/)[0];
英文:

Try to make your RegExp more simple. You write too complex code for simple task.

  1. let input = &quot;my numberis 0987654321&quot;;
  2. // filter symbols which can separate phone number dights
  3. input = input.split(&quot; &quot;).join(&quot;&quot;).split(&quot;-&quot;).join(&quot;&quot;);
  4. let phoneNumber = input.match(/\d{10,}/)[0];

huangapple
  • 本文由 发表于 2020年1月6日 20:31:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/59612185.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定