首页 > 其他分享 >常用正则表达式

常用正则表达式

时间:2023-11-23 14:13:23浏览次数:32  
标签:u4e00 常用 setValue const 正则表达式 value let reg

正文:
MDN正则参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

我的正则笔记:https://www.yuque.com/docs/share/36f69420-115f-4e01-b897-550d94b404ab?# 《正则》

千分位表示价格

1.针对正数、负数,整数,浮点数都可以(IE不支持,会出现错误的数量词错误)

/(^-?\d{1,2}|-?(?<!\.\d*)\d{3})(?=((\d{3})+(\.\d*)?)$)/g

示例:

let str = "123456789122324342223231.5648323";
let reg = /(^-?\d{1,2}|-?(?<!\.\d*)\d{3})(?=((\d{3})+(\.\d*)?)$)/g;
str.replace(reg,"$&,") // 结果:123,456,789,122,324,342,223,231.5648323
 
let str = "-1234567891223243422.5648323";
let reg = /(^-?\d{1,2}|-?(?<!\.\d*)\d{3})(?=((\d{3})+(\.\d*)?)$)/g;
str.replace(reg,"$&,") // -1,234,567,891,223,243,422.5648323

2、旁门左道实现(针对正整数)

(str || "").split("").reverse().join("").replace(/(\d{3})(?!=\d*\.)/g,"$1,").replace(/,$/g,"").split("").reverse().join("")

3.整数小数均可,传是否保留小数入参
示例:

/* 处理整数部分 */
function intFormatPrice(str){
    return (str || "").split("").reverse().join("").replace(/(\d{3})(?!=\d*\.)/g,"$1,").replace(/,$/g,"").split("").reverse().join("")
}
 
/* 千分位主函数 */
function formatPrice(str="",fixed){
    let price =  fixed!=='undefined' ? `${Number(str).toFixed(fixed)}`: str;
    return `${price}`.split(".").map((item,index) =>{
    if(!index){
        return intFormatPrice(item)
    }    
    return item
}).join(".")
}

主要针对价格:

1、只能输入100、100.00、100.(失去焦点之后自动补全小数)、.122

2、不能输入100.0.0这种非法价格

3、正数

4、可输入0、0.0、0.00、0.、.0

5.输入.时,失去焦点自动补全为0.0
6.不能输入00

let reg = /^\s*([1-9]\d*|0)?(\.)?([1-9]|(?<!^0)0)*\s*$/g;

示例:

import React, { useState } from 'react';
import { Input } from '@casstime/bricks';
 
const Demo = () => {
  const [value, setValue] = useState('');
 
  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    let value = e.target.value;
    let reg = /^\s*([1-9]\d*|0)?(\.)?([1-9]|(?<!^0)0)*\s*$/g;
    if(value.search(reg)!==-1){
        setValue(e.target.value);
    }
     
  };
  const handleBlur = () => {
    let regex = /(\.$|^\.)/g;
    let numberValue = Number(value);
     if(isNaN(numberValue)){
     setValue("0.00");
    }else if(value.search(regex)!==-1 ){
     setValue(`${Number(value)}`);
    }
   }
  return (
    <Input
      value={value}
      onChange={handleChange}
      onBlur={handleBlur}
      placeholder="请输入..."
      defaultValue="123"
    />
  );
};

主要针对数量:

1、默认为1个,不能输入0、以及小数

2、可删除为空的,空的失去焦点则自动填为1

3、最多为9999999,至少一个

4、正整数

/^\s*([1-9]\d*)?\s*$/g

示例:

import React, { useState } from 'react';
import { Input } from '@casstime/bricks';
 
const Demo = () => {
  const [value, setValue] = useState('');
 
  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    let value = e.target.value;
    let reg = /^\s*([1-9]\d*)?\s*$/g;
    if(value.search(reg)!==-1){
        setValue(e.target.value);
    }
     
  };
  const handleBlur = () => {
     if(!value.trim()){
     setValue("1");
    }
   }
  return (
    <Input
      value={value}
      onChange={handleChange}
      onBlur={handleBlur}
      placeholder="请输入..."
      defaultValue="123"
    />
  );
};

与中文有关:

1、只能输入中文、空格
中文+空格

/^[\u4e00-\u9fa5\s]*$/g

非(中文+空格)

/[^\u4e00-\u9fa5\s]/g

此示例可以解决微软输入法限制输入中文时也可以输入拼音

import React, { useState,useRef,useEffect } from 'react';
import { Input } from '@casstime/bricks';
 
const Demo = () => {
  const [value, setValue] = useState('');
  const [puase,setPuase] = useState(false);
 
  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    let val = e.target.value || "";
    let reg = /^[\u4e00-\u9fa5\s]*$/g;
    let reg1 = /[^\u4e00-\u9fa5\s]/g;
     
    setValue(val);
     
    if(!puase && val.search(reg) === -1 && val){
      setValue(val.replace(reg1,""))
    }
  };
   
  const compositionstart = () => {
   setPuase(true)
  }
   
  const onCompositionEnd = () => {
    setPuase(false)
    let reg = /^[\u4e00-\u9fa5\s]*$/g;
    let reg1 = /[^\u4e00-\u9fa5\s]/g;
    if(value.search(reg) === -1 && value){
      setValue(value.replace(reg1,""))
    }
   }
   
  return (
    <Input
      value={value}
      onChange={handleChange}
      placeholder="请输入..."
      onCompositionStart={compositionstart}
      onCompositionEnd={onCompositionEnd}
    />
  );
};

只能输入中文,不能输入空格
中文

/^[\u4e00-\u9fa5]*$/g

非中文

/[^\u4e00-\u9fa5]/g

此示例可以解决微软输入法限制输入中文时也可以输入拼音

import React, { useState,useRef,useEffect } from 'react';
import { Input } from '@casstime/bricks';
 
const Demo = () => {
  const [value, setValue] = useState('');
  const [puase,setPuase] = useState(false);
 
  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    let val = e.target.value || "";
    let reg = /^[\u4e00-\u9fa5]*$/g;
    let reg1 = /[^\u4e00-\u9fa5]/g;
     
    setValue(val);
     
    if(!puase && val.search(reg) === -1 && val){
      setValue(val.replace(reg1,""))
    }
  };
   
  const compositionstart = () => {
   setPuase(true)
  }
   
  const onCompositionEnd = () => {
    setPuase(false)
    let reg = /^[\u4e00-\u9fa5]*$/g;
    let reg1 = /[^\u4e00-\u9fa5]/g;
    if(value.search(reg) === -1 && value){
      setValue(value.replace(reg1,""))
    }
   }
   
  return (
    <Input
      value={value}
      onChange={handleChange}
      placeholder="请输入..."
      onCompositionStart={compositionstart}
      onCompositionEnd={onCompositionEnd}
    />
  );
};

标签:u4e00,常用,setValue,const,正则表达式,value,let,reg
From: https://www.cnblogs.com/husq/p/17851409.html

相关文章

  • CTF-MISC(杂项)常用工具
    Audacity 提取莫斯密码辅助工具。题目中遇到音频文件,听到长短不一的声音,往往就是摩斯密码题。直接使用此工具,省时省力高效率。 stegsolve图片隐写分析工具选中可疑图片打开。利用四个功能,查看图片中隐藏的各种信息。打开可疑动图。 QR_Research二维码工具查找二维......
  • golang常用包详解之: errgroup
    前言:并发编程在现代软件开发中变得越来越重要。Go语言通过goroutine和channel等语言特性为并发编程提供了非常强大的支持,但是在实际开发中,如何有效管理多个goroutine并处理它们可能产生的错误是一个挑战。这时,Go语言的官方库中的errgroup包就能发挥作用。正文:1.errgroup包概述......
  • vscode 常用配置及插件
    1、调整左侧缩略图滑块颜色打开“设置”,然后修改配置JSON文件在最下面加上这段,其中颜色根据自己喜好修改"workbench.colorCustomizations":{"scrollbarSlider.activeBackground":"#62fa1b","scrollbarSlider.hoverBackground":"#fa2a1b",......
  • 个人Linux常用命令记录
    常用命令ls:列出当前目录中的文件。cd目录:切换当前工作目录到指定的目录。pwd:显示当前工作目录的路径。touch文件名:创建一个空文件或者更新文件的访问时间。mkdir目录名:创建一个新的目录。rmdir目录名:删除一个空目录。cp源文件目标文件:复制文件......
  • Windows_Cmd常用操作配置
    目录特定功能执行命令显示系统当前版本电源管理历史命令相关显示路由表显示本地ARP缓存测试主机联通性查看网卡信息修改DOS窗口中的编码格式诊断域名系统(DNS)基础结构的信息追踪网络路由获取序列号命令行添加环境变量设置网口ip文件操作磁盘远程连接管理进程管理计划任务管......
  • Python中列表和字符串常用的数据去重方法你还记得几个?
    (Python中列表和字符串常用的数据去重方法你还记得几个?)1关于数据去重关于数据去重,咱们这里简单理解下,就是删除掉重复的数据;应用的场景比如某些产品产生的大数据,有很多重复的数据,为了不影响分析结果,我们可能需要对这些数据进行去重,删除重复的数据,提高分析效率等等。2字符串......
  • Java正则表达式从入门到精通​
    Java正则表达式从入门到精通JAVA正则表达式规则Java中的正则表达式规则,在java.util.regex.Pattern类文档中有详细说明。字符类匹配符(只匹配一个字符)规则字符说明[abc]匹配a,b或c中的任意一个字符[^abc]除a,b或c之外的任意一个字符(取反)[a-zA-Z]包含在a到z或A到Z范围内的任意一个字符(......
  • 最常用的5款报表系统
    在这个信息化飞速发展的时代,报表系统已经成为了企业管理和决策的重要工具。随着市场的需求不断增长,报表系统也在不断地更新和完善。如今,市面上有数不尽的报表系统,但是哪款才是最常用的呢?接下来,我们将为您揭晓最常用的5款报表系统。1.VeryReport报表系统VeryReport报表系统是一......
  • 中国最常用的制作报表的软件有哪些?
    随着信息化时代的浪潮席卷而来,报表制作软件已经成为了企业管理中的得力助手。在中国的大地上,有许多优秀的报表制作软件,而本文将为您揭示五位佼佼者,其中更以VeryReport报表软件为首选。编辑搜图请点击输入图片描述(最多18字)首先,MicrosoftExcel无疑是办公领域的明星产品,其数据处理和......
  • 正则表达式
    正则表达式RE正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。元字符元字符是这样一类字符,他们表达的是不同于字面本身的含义shell元字符(也称通配符) 由sh......