javascript - jQuery 正则表达式返回意外结果

标签 javascript regex

我尝试将以下代码与 jQuery 结合使用来验证十六进制值字符串,但得到了意外的结果:

var a = new RegExp("0x[a-fA-F0-9]+")
var result = a.test('0x1n')

在这种情况下,result 实际上返回 true。我在这里缺少什么?

最佳答案

您需要 anchor 来匹配字符串的开头和结尾。这将使正则表达式尝试匹配整个字符串,而不是字符串的一部分:

var a = new RegExp("^0x[a-fA-F0-9]+$")

否则,您的正则表达式与 0x1 部分匹配并返回 true

另一方面,以下内容会更好一些:

var re = /^0x[a-f0-9]+$/i;

i 标志使其不区分大小写,因此您不必指定 a-fA-F

关于javascript - jQuery 正则表达式返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814555/

相关文章:

java - 在数字第一次出现时分割字符串的最有效方法?

javascript - 使用 Firefox 插件更新选项卡内容

javascript - gulpfile.js - 任务不在 gulp 文件中错误

javascript - 为搜索到的键/值对返回 bool 值的最简单方法 (Javascript)

javascript - Angular 过滤器将所有下划线替换为空格

Python 正则表达式被动组和回顾

javascript - 禁用某些字段的 Bootstrap 验证器

javascript - 按钮 JQuery 事件只工作一次,为什么?

c# - 在 .NET 中使用正则表达式替换字符串

python - 嵌套列表,来自 bash 输出的 Python