JavaScript RegExp – [0-9]
正则表达式是一种强大的文本处理工具,JavaScript 中的正则表达式是 RegExp 对象。在此基础上,我们可以使用表达式选择字符串、替换内容、匹配模式等操作。本文将介绍在 JavaScript 中如何使用正则表达式,特别是对于 [0-9] 的应用。[0-9] 表示匹配所有数字,即 0 到 9 的所有整数。
创建正则表达式
使用正则表达式需要创建 RegExp 对象。有两种创建方式:
- 使用字面量创建
// 匹配所有数字
let reg1 = /[0-9]/
// 匹配至少一个数字
let reg2 = /[0-9]+/
- 使用构造函数创建
// 匹配所有数字
let reg3 = new RegExp("[0-9]")
// 匹配至少三个数字
let reg4 = new RegExp("[0-9]{3,}")
可以看到两种方式创建的正则表达式结果相同,区别在于字面量方式更为简洁,构造函数方式可动态传参。
正则表达式匹配字符串
RegExp 对象可以对一个字符串进行正则匹配。当有一个字符串需要匹配时,一些元字符如 +、*、?、{m,n} 等可以用来表示字符串的数量特性。在这些元字符中,[] 表示选择字符,所以 [0-9] 就表示匹配所有数字。
如下示例:
let str = "abc1234";
let reg = /[0-9]/
console.log(str.match(reg)); // ["1"]
match() 方法的返回值是一个数组,表示所有符合条件的字符串。在上例中,可以看到返回值是 [“1”],这是因为该字符串中只有一个数字符合 [0-9] 的条件。
字符串的替换
replace() 是另一个常用的 RegExp 方法。它不仅可以替换一个字符串的特定部分,还可以支持对字符串的搜索引擎进行替换,并允许将搜索结果作为我们自己制定的格式组成新的字符串。
下面是一个将“<”和“>”转化为 HTML 实体的例子:
let str = "<html><body><h1>Hello, World!</h1></body></html>";
let reg = /</g;
console.log(str.replace(reg,'<'));
// <html><body><h1>Hello, World!</h1></body></html>
在上例中,我们使用了 /</g 的正则表达式,表示匹配全部的 “<”,并进行全局替换。在执行 replace() 方法后,返回的结果将字符串中的所有 “<” 和 “>” 替换成了 HTML 实体 < 和 >。
模式匹配的组
JavaScript 正则表达式包含组和反向引用,还允许使用括号内的正则表达式进行分组。匹配之后,也可以通过索引访问各个匹配组。
下面是一个使用 RegExp 对象直接解析出时间和日期的示例:
let str = "today is 2021-11-11,now is 12:34:56.";
let reg = /^(\w+) is (\d{4}-\d{2}-\d{2}),now is (\d{2}:\d{2}:\d{2}).$/;
let m = str.match(reg);
console.log(m[1], m[2], m[3]);
// today 2021-11-11 12:34:56
在上例中,我们使用了 \w+、\d{4}-\d{2}-\d{2}、\d{2}:\d{2}:\d{2} 等匹配组,将字符串中的日期和时间提取出来,并打印到控制台上。m[1]、m[2] 和 m[3] 就分别表示匹配的第一个分组、第二个分组和第三个分组。
JavaScript RegExp – [0-9] 的应用
[0-9] 可以用于匹配包含数字的字符串。我们可以使用正则表达式检查字符串是否仅包含数字,或是否包含任意数量的数字。
验证字符串是否仅包含数字
let reg = /^[0-9]+$/
console.log(reg.test("123")); // true
console.log(reg.test("12a")); // false
console.log(reg.test("abc123")); // false
在上例中,我们使用了 /^[0-9]+$/ 的正则表达式匹配,表示字符串包含至少一个数字,并以数字结尾。test() 方法返回 true,表示该字符串仅包含数字。
验证字符串中是否包含数字
let reg = /[0-9]/
console.log(reg.test("123abc")); // true
console.log(reg.test("abc")); // false
在这个例子中,我们使用了 /[0-9]/ 的正则表达式匹配,表示该字符串中存在至少一个数字。test() 方法的返回值是 true 和 false,表示给定字符串中是否存在数字。
结论
RegExp 对象可以以精确的方式查找和操作文本。我们可以使用正则表达式匹配、搜索、提取、替换字符串。[0-9] 是常用的匹配数字的元字符,我们可以在正则表达式中使用它来匹配各种数字。通过组与反向引用,我们还可以对匹配的文本进行操作,例如提取日期、时间、URL 等信息。在使用正则表达式时,要特别注意正则表达式标志,与操作文本字符串相对应的标志是 i、g 和 m,它们分别表示不区分大小写、全局匹配和多行匹配。