3-48 不懂/\d*/和/\d+/的区别

3-48 不懂/\d*/和/\d+/的区别

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

   

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

 <title>正则表达式</title>

</head>

<body>

 

<script type="text/javascript">

    var str = '110报警120急救119火警114查询';

    /*此处写代码*/

 var pattern=/\d*/g;

 document.write(str.match(pattern));

  

</script>

</body>

</html>

   


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
妮可妮可妮_ 2018-07-20 10:02:22

*匹配前面的子表达式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于{0,}。

+匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。

\d匹配一个数字字符。等价于[0-9]。


虽然数字也出现了,但是 结果是“110,,,120,,,119,,,114,,,”,因为*表示匹配前面的子表达式任意次(即0或多次),所以数字可以为0次,即出现这种结果。改为 /\d+/g , 匹配前面的子表达式一次或多次(大于等于1次),也就是数字至少有一次,结果为110,120,119,114,祝学习愉快~

  • 提问者 TeLiCH #1
    var str = '我家的电话是6930184,asd12地址是北京西城区'; var pattern = /\d+/g; console.log(pattern.exec(str)); 为什么这样又不能匹配到所有数字
    2018-07-20 10:28:38
  • 妮可妮可妮_ 回复 提问者 TeLiCH #2
    当 是一个全局正则表达式时,可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本,所以可以通过console.log(pattern.exec(str));两次,来实现效果哦~
    2018-07-20 11:32:22
  • 提问者 TeLiCH 回复 妮可妮可妮_ #3
    用g不是可以找到全部数字吗?为什么12没找到呢
    2018-07-20 12:46:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师