格式化数字(每几个数字后加一个空格)

onInput = ({ detail }) => {
		const value = detail.value; // 输入的字符串
		const newValue = value.replace(/([^0-9])/g, ‘‘); // 只允许输入数字
		const formatValue = newValue.replace(/(\d{4})(?=\d)/g, ‘$1 ‘); // 每4个数字后面加一个空格
		const inputLen = this.getOriginValue().length;
		if (inputLen > this.maxLen) { // 如果输入的字符大于最大输入长度则禁止继续输入
			this.inputRef.inputRef.value = this.state.recharge_phone;
			return;
		}

		const end = () => {
			setTimeout(() => {
				this.end();
			}, 10);
		};

		if (inputLen >= this.minLen) {
			this.setState({ isValidNo: true, recharge_phone: formatValue }, end);
		} else {
			this.setState(
				{ isValidNo: false, recharge_phone: formatValue, activeItem: -1 },
				end
			);
		}

		return formatValue;
	};

     /**
	 * 移动光标位置到最后面
	 */
	end() {
		const obj = this.inputRef.inputRef;
		const len = this.state.recharge_phone.length;
		if (document.hasOwnProperty(‘selection‘)) {
			const sel = obj.createTextRange();
			sel.moveStart(‘character‘, len);
			sel.collapse();
			sel.select();
		} else if (
			typeof obj.selectionStart === ‘number‘ &&
			typeof obj.selectionEnd === ‘number‘
		) {
			obj.selectionStart = obj.selectionEnd = len + 1;
		}
	}

	/**
	 * 获取input的原始值
	 */
	getOriginValue() {
		return this.inputRef.inputRef.value.split(‘ ‘).join(‘‘);
	}

  

原文地址:https://www.cnblogs.com/toward-the-sun/p/11451728.html

时间: 2024-10-20 02:51:04

格式化数字(每几个数字后加一个空格)的相关文章

JSTL c:If 标签 test条件后追加一个空格导致判断失败

上联:no zuo no die why you try 下联:no try no high give me five 横批: let it go. 坑爹bug: 错误写法: <c:if test="${4 > 0 } ">true</c:if> (最后一个大括号后多出一个空格,代码啥都不会输出) 正确写法: <c:if test="${4 > 0 }">true</c:if> 正确写法 输出结果: tru

正则实现文本框只能输入16个数字,每4位数字后添加一个空格

<head> <meta http-equiv="x-ua-compatible" content="IE=EmulateIE7" /> <title></title> <!-- http://www.cnblogs.com/babycool --> <script src="../js/jquery-1.7.2.min.js" type="text/javascript

linux命令后加一个 &amp;

默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的. tianfang > run &    [1] 11319    tianfang > 进程切换到后台的时候,我们把它称为job.切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319. 切换到后台的进程,仍然可以用

iOS 每三个数字加一个逗号

//每三个数字加一个逗号 : 123,234,324 + (NSString *)countNumAndChangeformat:(NSString *)num { int count = 0; long long int a = num.longLongValue; while (a != 0) { count++; a /= 10; } NSMutableString *string = [NSMutableString stringWithString:num]; NSMutableStr

18.n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。 求出在这个圆圈中剩下的最后一个数字。

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4263868.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字). 当一个数字

NFA转换成DFA——汉字形式数字转换成整数数字

偶然间遇到了一个需求:汉字形式数字转换成整数数字.如果不处理意外情况,可以写的很简单(比如不会出现三三等),详情可以看这里.但是,想着可以写成一个FA的形式,于是乎,发现并不是想象中的那么简单..因为写成FA就发现,要处理非法形式的问题,还是有点麻烦的. 好不容易写成了FA,发现是个NFA,于是乎写了个NFA转换成DFA的代码,也支持了一套简单的FA的定义规则.代码如下: package ie; import java.util.ArrayList; import java.util.HashM

CodeVS 1359 数字计数 51nod 1042 数字0-9的数量 Pascal

题目大意: 我的代码又臭又长,但是毕竟是我这个jr想了几天才推出的公式,看别的大神都写数位DP,所以我决定分享一下我的思路.我认为我的思路一向是最好理解的! 要分两种情况讨论: 1.0的情况.我们首先推出0~9中只有1个0,在0~99中有(1+(9*100*1))个0{第一位可以为1~9,第二位可以为0~9,0只可以放在后者,所以乘1},在0~999中有((1+(9*100*1))+(9*101*2))个0~6666为例,先算出0~999中0的个数,在算出1000~5999中0的个数,则为(10

一个能将给定非负整数数组中的数字排列成最大数字的函数

最近在网上看到这样一个题目,自己琢磨了一下. java version "1.8.0_40" // 编写一个能将给定非负整数数组中的数字排列成最大数字的函数. // 例如,给定[50,2,1,9],最大数字为95021. public class Sort { public static void main(String args[]){ int number[] = {1,2,3,32,335,34,7,6,9}; int number1[] = {312,321,3354,222,

大小写互换-&quot;数字字符串&quot;转换成数字

今天穿着hacker浑浊马甲在百度编程课堂实训习题中发现了这个很简单的问题,就做了下. 为了考虑输入的是否是数字,结果写好后竟然超时了. 不过里面用到的将字符串装换成数字的方法,感觉是个收获,因此在此做下笔记. 大小写互换 时间限制:1000 ms | 内存限制:65535 KB 难度:0 描述 现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串. 输入 第一行只有一个整数m(m<=10),表示测试数据组数. 接下来的m行,每行