常用正则(JS前端)

经纬度

// 经度 dd:mm:ss.ssssssE/W
export const lngReg =
  /^(((((0?[0-9]?[0-9]|1[0-7][0-9]):[0-5][0-9]:[0-5][0-9])(\.\d{1,6})?)|((180:00:00)(.000000)?))[E|W]|[0])$/;
// 纬度 dd:mm:ss.ssssssE/W
export const latReg = /^((0?[0-8]?[0-9]:[0-5][0-9]:[0-5][0-9](\.\d{1,6})?)[N|S]|[0])$/;
// xyz,最多四位小数
export const xyzReg = /^(\-|\+)?[0-9]+(\.[0-9]{1,4})?$/;
// h,最多四位小数
export const hReg = /^(\-|\+)?[0-9]+(\.[0-9]{1,4})?$/;

表单常用

// ip
export const ipReg = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
// url
export const urlReg = /^[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]$/;
// 纯数字组成
export const digitReg = (str) => {
  let pattern = /^\d+$/;
  return pattern.test(str);
};
// 纯字母
export const charReg = (str) => {
  let pattern = /^[a-zA-Z]+$/;
  return pattern.test(str);
};
// 数字+字母组成,同时包含数字、字母
export const digitCharAllReg = (str) => {
  let pattern = /^(?=.*[a-zA-Z])(?=.*\d).+$/;
  return pattern.test(str);
};
// 数字+字母组成,不必要同时包含
export const digitCharSomeReg = (str) => {
  let pattern = /^[A-Za-z0-9]+$/;
  return pattern.test(str);
};

校验开闭区间

// 校验开闭区间
// (1, 10):代表 1 < x < 10;
// (1, 10]:代表 1 < x <= 10;
// [1, 10]:代表 1 <= x <= 10;
// [1, 10):代表 1 <= x < 10;
// (1, ) 或 (1, ]:代表 x > 1;
// [1, ] 或 [1, ):代表 x >= 1;
// (, 10) 或 [, 10):代表 x < 10;
// (, 10] 或 [, 10]:代表 x <= 10;
const isValidNumRange = (numRange) => {
  const NUM_RANGE_PATTERN = /[[|(][\d+],[\d+][\]|)]/; //(1, 10)
  const LEFT_NUM_RANGE_PATTERN = /[[|(]\d+,\s?[\])|)]/; //(1, )
  const RIGHT_NUM_RANGE_PATTERN = /[[|(][\d+],[\d+][\]|)]/; //(, 10)
  return (
    NUM_RANGE_PATTERN.test(numRange) ||
    LEFT_NUM_RANGE_PATTERN.test(numRange) ||
    RIGHT_NUM_RANGE_PATTERN.test(numRange)
  );
};

const inNumRange = (number, numRange) => {
  if (!isValidNumRange(numRange)) {
    return false;
  }
  let pairs = numRange.split(',');
  let rangeNums = Array.from(pairs).map((item) => item.replaceAll(/[(|)|\]\[|\\]/g, ''));
  let minValue = '' == rangeNums[0] ? null : Number(rangeNums[0]);
  let maxValue = '' == rangeNums[1] ? null : Number(rangeNums[1]);
  // 判定数值是否大于最小值
  let minMatched =
    minValue == null || (pairs[0].startsWith('[') ? number >= minValue : number > minValue);
  // 判定数值是否小于最大值
  let maxMatched =
    maxValue == null || (pairs[1].endsWith(']') ? number <= maxValue : number < maxValue);
  return minMatched && maxMatched;
};
console.log(inNumRange(1, "(0, 2]"))  //true
console.log(inNumRange(1, "(, 2]"))   //true
console.log(inNumRange(1, "(1, 4]"))  //false
console.log(inNumRange(1, "(0, ]"));  //false



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值