判断输入的字符是否为整数(包含整数格式验证)

在项目中,很多时候都会有输入框的存在,为了防止用户随意输入都会有限制,最近遇到一种需求,输入价格时只能输入数字类型,并且输入的数字格式要正确,

在网上搜索的很多验证数字的对格式没有校验,所以自己就完善了一下,使用的正则表达式,但是由于自己正则知识实在匮乏,写的比较low,不过也能实现最终的效果吧

能通过验证的数字类型: 0.9, 1, 20....

不能通过验证的数字: 00.9, 0, 09, 99., 其他包含字母,标点符号的字符串

项目里的输入框是用的element的form表单,form表单自带验证规则,我这个是写在自定义验证规则里的,不过修改一下也可以单独使用

var checkPrice = (rule, value, callback) => {
  let zero = /^0+\d*$/ // 过滤以0开头的数据(不含小数点)
  let dublue = /^0{2,}\.\d+$/ // 过滤小数点前有两个以上0的数字
  let point = /^\d+\.?\d+$/ //  以数字开头,可以允许出现一次或0次小数点,以数字结尾(这里的数字必须有两个)
  let reg = /^[1-9]{1}$/ // 匹配只有一个数字的情况
  if (!value) {
    callback(new Error(‘Please enter the unit price‘))
  }
  setTimeout(() => {
    if (zero.test(value) || dublue.test(value)) { // 首先过滤掉错误的数据
      callback(new Error(‘Enter the correct number format‘)) // 调取输入框验证的方法
    } else if (point.test(value) || reg.test(value)) { // 匹配数据,如果输入的数字只有一位数时用reg匹配
      callback() // 验证通过
    } else {
      callback(new Error(‘Enter the correct number format‘))
    }
  }, 100)
}

也可以写成一个函数使用

function checkPrice (value) {
  let zero = /^0+\d*$/ // 过滤以0开头的数据(不含小数点)
  let dublue = /^0{2,}\.\d+$/ // 过滤小数点前有两个以上0的数字
  let point = /^\d+\.?\d+$/ //  以数字开头,可以允许出现一次或0次小数点,以数字结尾(这里的数字必须有两个)
  let reg = /^[1-9]{1}$/ // 匹配只有一个数字的情况
  if (!value) {
    return false
  }
  if (zero.test(value) || dublue.test(value)) { // 首先过滤掉错误的数据
    return false
  } else if (point.test(value) || reg.test(value)) { // 匹配数据,如果输入的数字只有一位数时用reg匹配
    return true
  } else {
    return false
  }
}

使用效果

因为对正则也是一知半解,所以写得很重复,如果有优化意见希望能告知(*^▽^*)

原文地址:https://www.cnblogs.com/steamed-twisted-roll/p/9778860.html

时间: 2024-10-09 03:10:04

判断输入的字符是否为整数(包含整数格式验证)的相关文章

EditText监听方法,实时的判断输入多少字符

最近在写一个小项目,其中有一点用到了显示EditText中输入了多少个字符,像微博中显示剩余多少字符的功能.在EditText提供了一个方法addTextChangedListener实现对输入文本的监控.下边是我自己写的一个Demo. 代码实现: 布局文件main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.

华为OJ——输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数

题目描述 输入一行字符,分别统计出包含英文字母.空格.数字和其它字符的个数. 输入描述: 输入一行字符串,可以有空格 输出描述: 统计其中英文字符,空格字符,数字字符,其他字符的个数 输入例子: 1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][ 输出例子: 26 3 10 12 <span style="font-size:18px;">import java.util.*; public class Main { pu

正则判断输入的字符(英文、数字、空格、其他)的个数

1 /** 2 * 3 * 类 描 述: 正则判断输入的字符(英文.数字.空格.其他)的个数 4 * 作 者: 赵 鹏 5 */ 6 public class RegularJudgeCharacter { 7 8 public static void main(String[] args) { 9 10 String arg = "safd415 ^&*^*^$# "; 11 12 //将string字符串转义为char数组 13 char[] charArray = arg

判断输入的字符是不是数字

判断输入是数字,还是字符串 方法一: a = input("请输入一个要判断的字符: ") m = n = 0 for i in a: m += 1 if i in ['0','1','2','3','4','5','6','7','8','9']: n += 1 if m == n: print("您输入的是数字:", a) else: print("您输入的是字符串:", a) 方法二: myInput = input("请输入一个

js判断输入的字符是否是汉字

<script type="text/javascript"> var c=prompt("请输入一个字符"); var isNumber = c>="0" && c<= "9"; var isAlphabet = (c>="A" && c<="Z")||(c>="a" && c

【转】EditText监听方法,实时的判断输入多少字符

最近在写一个小项目,其中有一点用到了显示EditText中输入了多少个字符,像微博中显示剩余多少字符的功能.在EditText提供了一个方法addTextChangedListener实现对输入文本的监控.下边是我自己写的一个Demo. 代码实现: 布局文件main.xml [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android

输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数-简单题

#include "stdafx.h" #include<iostream> using namespace std; void count(char *c) {  if(c==NULL)   return;  int zimu=0;  int shuzi=0;  int kongge=0;  int qita=0;  while(*c)  {   if((*c>='a'&&*c<='z')||(*c>='A'&&*c<

自定义EditText动态控制输入的字符数量

在开发中难免会遇到要控制字符数量的输入限制,比如用户的名字会让你输入10个字符(意思是英文可以输入10个但是汉字只可以输入5个),也许第一反应会在xml中设置EditText的长度,这种情况肯定是达不到我们的要求的.下面介绍一下自己的方法. 1.声明一个类继承InputFilter,实现filter中的方法,下面有详细的注解读者可以仔细看下 public class MyLenghtFilter implements InputFilter { int nMax=0; int keep=0; p

利用while语句,条件为输入的字符不为&#39;\n&#39;.

题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 一个很简单的问题,其实换种方式就能完成,但是我就想怎么着才能在while()判断 输入的字符是否为'\n'.(*^▽^*) 1 /** 2 * 3 */ 4 package Training; 5 6 import java.util.Scanner; 7 8 /** 9 * @author Administrator 10 * 11 */ 12 publi