涉及使用正则表达式的 Javascript 函数

标签 javascript regex

我允许用户通过表单字段输入框的尺寸。允许的值是:

  1. 正整数
  2. 必须以 px 或 % 结尾

示例有效数字为 300px 或 70%

此外,我想放置一些额外的验证逻辑:

如果输入的值是百分比,则数字必须在 0 > x <=100 范围内

如果输入的数字以像素为单位,我希望能够检查硬编码的最小值和最大值。

我的正则表达式知识非常匮乏,因为我已经很多年没有使用它了。

我想写一组这样的辅助函数:

// returns true if value ends in px or % [with no spaces], false otherwise
function is_scale_valid(value){
}

//returns 'px', '%' or undefined 
function get_scale_type(value){
}

// called after is_scale_valid, to ensure we are dealing with
// a +ve integer that falls in desired range. This function 
// strips away the 'scale' part of the value and only looks 
// at the number
function is_valid_number(value, scaletype, valid_min, valid_max){
}

谁能帮我填写这些辅助函数?

最佳答案

你想要的正则表达式是:

var r = new RegExp("^\\s*(\\d+(?:\\.\\d+)?)\\s*(px|%)?\\s*$");

这个表达式的意思是:

  • 允许前导和尾随空格 (\s);
  • 该数字是一位或多位数字(可选)后跟一个句点和一位或多位数字;
  • 单位可以是“px”、“%”或省略。

您需要从中手动检查输入的数字。

var match = r.exec("93px");
var number = parseFloat(match[1]);
var symbol = match[2];
if (symbol == "px") {
  // validate number as a pixel
} else if (symbol == "%") {
  // evaluate as percentage
} else {
  // no symbol was entered
}

关于涉及使用正则表达式的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260009/

相关文章:

javascript - 使用 jQuery 追加为兄弟元素而不是子元素

asp.net - 使用 UpdateProgress ASP.NET AJAX 时“this.get_element() 未定义”

javascript - 为什么基于 ng-class 的 ng-animate 转换不起作用?

c++ - 有没有办法在单次迭代中进行任意数量的正则表达式替换?

c# - 使用正则表达式设置文本字段的长度

javascript - Webkit Javascript 控制台 - 如何使用它?

javascript - 以逗号作为百位分隔符打印数字

java - 使用java从日志文件中读取用户名

Python 正则表达式模块即使重叠 = True 也找不到所有匹配项

javascript - react 错误index.js :1452 Warning: Each child in an array or iterator should have a unique "key" prop