js正则表达式书写/判断是不是某些字符/微信小程序限制input输入为合法整数并提醒

示例代码:匹配

<input class="test" type="number" value="{{test}}" bindinput="input_test" />

type="number"控制弹起数字键盘

input_test(e) {
    let value = this.validateNumber(e.detail.value)
    this.setData({
      test: value
    })
  },
  validateNumber(val) {
    if(isNaN(val)){
      wx.showToast({
        title: '请输入数字',
        icon: 'none',
      })
    }
    val = val.replace(/[\D]/g, '')	// 去除非数字的符号
    if(val == '0'){
      return val
    }
    val = val.replace(/^0+/, '') // 去掉整数部分高位的连续零
    return val
  },

本质:正则表达式匹配

要判断是不是某一些字符,用正则表达式实现,然后加一个.test(要判断的内容)即可,如果要判断的内容符合正则表达式定义,则返回true,否则返回false

格式:正则表达式.test(要判断的字符串)

如上:/[^\d.]/.test(val)判断val是不是数字或者小数点以外的字符

在 JavaScript 中,正则表达式可以通过字面量或构造函数创建。下面是两种常见的方式:

字面量方式(推荐):

const regex = /[^\d.]/g;

在字面量方式中,正则表达式直接写在两个斜杠之间。

构造函数方式:

Copy code
const regex = new RegExp('[^\\d.]', 'g');

在构造函数方式中,正则表达式作为字符串传递给 RegExp 对象,并且需要双反斜杠来转义特殊字符。

一个一定要注意的点

在正常情况下,正则匹配到第一个匹配项则停止,并且默认大小写敏感,如果想修改默认选项,则需要修饰符。
所以如下代码:

validateNumber(val) {
    if(!(/[0-9]+\.[0-9]+/.test(val) || /[1-9][0-9]*/.test(val) || /0/.test(val))){
      return false
    }
    return true
  },

本意是:匹配合法的整数和小数,所以诸如098和4.ra这种都是不合法的。
但是由于正则匹配默认匹配到第一个匹配项即停止,所以098会因为匹配到0那个匹配项而匹配停止认为合法,同样的4.ra会因为4匹配到匹配项和匹配停止认为合法
所以要用到开始^和结束$符号来修饰,改正如下就对了,在每个匹配项上都加上开始和结束符号,意思是要从输入的字符串val开始匹配到字符串结束,只有当整个串符合定义的某个项,才认认为匹配到项了:

validateNumber(val) {
    if(!(/^[0-9]+\.[0-9]+$/.test(val) || /^[1-9][0-9]*$/.test(val) || /^0$/.test(val))){
      return false
    }
    return true
  },

其他注意点

  • ^:
  1. 在方括号内使用 ^ 表示对字符集合取反,即匹配除了指定字符之外的任何字符。
  2. 不在方括号内使用的,如/^0+/ 中的 ^ 表示匹配字符串的开头,后面的 0+ 表示匹配一个或多个连续的零。
  • $:表示整个字符串的结束
    所以/^0+/用于匹配字符串开头连续的零
  • \d: 表示匹配数字。\
  • \D: 匹配任何非数字字符
  • g 是全局标志,表示在整个字符串中查找所有匹配项,而不是要从头开始从左至右匹配

参考:
js正则表达式书写
资料2

例如:怎么判断是数字还是字母

来自ChatGPT,顺便附上一下

法一:使用正则表达式

在JavaScript中,正则表达式提供了一种有效的方法来检查一个字符是字母还是数字。

function isDigit(char) {
    return /\d/.test(char);
}

function isLetter(char) {
    return /[a-zA-Z]/.test(char);
}

// 使用示例
console.log(isDigit('5')); // true
console.log(isLetter('A')); // true

上述示例中,/\d/ 匹配数字,/[a-zA-Z]/ 匹配字母。

法二:使用内置方法:isNaN函数

在JavaScript中,有一些内置方法可以判断一个字符是字母还是数字。

function isDigit(char) {
    return !isNaN(parseInt(char)) && isFinite(char);
}

function isLetter(char) {
    return char.toLowerCase() !== char.toUpperCase();
}

// 使用示例
console.log(isDigit('5')); // true
console.log(isLetter('A')); // true

isNaN() 函数用于判断一个值是否是非0-9的数字值,parseInt() 函数用于解析一个字符串,并返回一个整数。toLowerCase() 和 toUpperCase() 方法用于将字符转换为小写或大写形式,通过比较这两个形式来判断是否为字母。

参考:
参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值