关于匹配的问题

来源:3-30 位置匹配之首尾匹配

慕仙0287733

2020-05-22 13:42:36

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <title>正则表达式</title>
</head>
<body>
<script type="text/javascript">
   var str1 = '123b456';
   var x1 = /^\d+$/;
   if(x1.test(str1)){
       console.log('全是数字')
   }
   else {
       console.log('不全是数字')
   }
   var str2 = '123b456';
   var x2 = /^\d?$/;
   if(x2.test(str2)){
       console.log('全是数字')
   }
   else {
       console.log('不全是数字')
   }
</script>
</body>

</html>

请老师看下这两段代码, 第一段代码的首尾都是数字, 非数字夹在中间, 是不是可以这样理解: str1的第一个字符开始匹配x1, 一直匹配到b, 就停止了, 这时b就被x1看做是末尾字符了, 所以打印不全是数字(这里还有小问题就是在正则表达式中: 是拿字符串的每个字符依次去匹配正则表达式看是否符合条件, 还是直接用正则表达式中条件去匹配字符串,然后选取符合条件的字符呢?)

第二段代码中, 使用了\d?, 那么只能匹配0到1个数字字符, 那这样匹配到的就是12两个字符了, 但是12字符的首尾都是数字, 那打印的不应该是全是数字吗?


写回答

1回答

好帮手慕慕子

2020-05-22

同学你好,对于你的问题解答如下:

  1. 使用正则表达式从左到右依次匹配字符串str1,遇到字符b时,不满条件,就会停止匹配。由于停止匹配的位置并不是字符串的结尾处,不满足正则表达式限制首尾都是数字的匹配条件,所以返回的结果是“不全是数字”

  2. 是使用正则表达式中从左到右依次匹配字符串,然后选取符合条件的字符。

  3. ^表示匹配整个字符串开始的位置, $表示匹配整个字符串结束的位置。第二段代码匹配到的两个字符确实都是数字,但是匹配的结果12结尾并不是字符串str2的结尾,所以是不符合条件的。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

1

0 学习 · 14456 问题

查看课程