regex 如何检查正则表达式javascript中的字符和特殊字符(允许输入,和.)[duplicate]

irlmq6kh  于 2022-11-18  发布在  Java
关注(0)|答案(1)|浏览(110)

此问题在此处已有答案

Regular expression to match numbers with or without commas and decimals in text(11个答案)
7天前关闭。

var regex = /^(?=.*[_$@])(?=.*[^_$@.])[\w$@]$/;
var text = "12a/d";
console.log(regex.test(text))

它不工作。我希望它只允许输入数字和浮点数ex:'12.2,2','12','12.2','2,2'
谢谢大家

2mbi3lxu

2mbi3lxu1#

我 不 清楚 你 的 数字 格式 示例 。 12.2,2 是 用 逗号 分隔 的 两 个 数字 吗 ? 2,2 是 浮点 数 的 德语 区域 设置 表示 法 吗 ?
以下 是 针对 英语 语言 环境 的 数字 验证 , 其中 输入 了 有效 和 无效 的 数字 :

const input = [
  '0',
  '1',
  '1.',
  '1.2',
  '-1.2',
  '+1.2',
  '.123',
  '123.45',
  '1,123.45',
  '123,123.45',
  '1,123,123.45',
  '', // invalid
  '1-2', // invalid
  '1+', // invalid
  '1x', // invalid
  '1,12.9', // invalid
  '1,1234.9', // invalid
];
const re = /^[+-]?((\d+|\d{1,3}(,\d{3})+)(\.\d*)?|\.\d+)$/
input.forEach(str => {
  console.log( str + ' => ' + re.test(str));
});

中 的 每 一 个
输出 量 :

0 => true
1 => true
1. => true
1.2 => true
-1.2 => true
+1.2 => true
.123 => true
123.45 => true
1,123.45 => true
123,123.45 => true
1,123,123.45 => true
 => false
1-2 => false
1+ => false
1x => false
1,12.9 => false
1,1234.9 => false

格式
正则 表达式 说明 :

  • ^ - 字符 串 开头 的 锚 点
  • [+-]? - 可选 的 +-
  • ( - - 组 1 开始
  • ( - - 组 2 开始
  • \d+ - - 1 位 以上 的 数字
  • | - 组 2 中 的 逻辑 或
  • \d{1,3}(,\d{3})+ - - 1 至 3 位 数字 , 后跟 1 + 组 逗号 和 3 位 数字
  • ) - - 组 2 结束
  • (\.\d*)? - 可选 点 和 0 + 数字
  • | - 组 1 中 的 逻辑 或
  • \.\d+ - 一 个 点 和 一 个 1 + 数字
  • ) - - 组 1 结束
  • $ - - 字符 串 末端 的 锚 点

相关问题