# RegExp

RegExp 对象用于将文本与一个模式匹配。

# 实例属性

# flags

返回一个字符串,由当前正则表达式对象的标志组成。此属性是一个只读属性 此字符串中的字符按以下顺序排序和连接:

  • "g" for global
  • "i" for ignoreCase
  • "m" for multiline
  • "u" for unicode
  • "y" for sticky

如果没有设置标志,则该值为空字符串。

console.log(/foo/ig.flags);
// expected output: "gi"

console.log(/bar/myu.flags);
// expected output: "muy"

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# source

返回一个值为当前正则表达式对象的模式文本的字符串,该字符串不会包含正则字面量两边的斜杠以及任何的标志字符。

const regex1 = /fooBar/ig;

console.log(regex1.source);
// expected output: "fooBar"

console.log(new RegExp().source);
// expected output: "(?:)"

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# global

表明正则表达式是否使用了 "g" 标志。global 是一个正则表达式实例的只读属性。

var regex = new RegExp("foo", "g")

console.log(regex.global) // true
// expected output: "muy"

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# ignoreCase

表明正则表达式是否使用了 "i" 标志。ignoreCase 是正则表达式实例的只读属性。

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# multiline

表明正则表达式是否使用了 "m" 标志。multiline 是正则表达式实例的一个只读属性。

var regex = new RegExp("foo", "m");

console.log(regex.multiline);
// expected output: true

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# lastIndex

正则表达式的一个可读可写的整型属性,用来指定下一次匹配的起始索引。

const regex1 = new RegExp('foo', 'g');
const str1 = 'table football, foosball';

regex1.test(str1);

console.log(regex1.lastIndex);
// expected output: 9

regex1.test(str1);

console.log(regex1.lastIndex);
// expected output: 19

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# 实例方法

# exec(string)

在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。

Parameters

name type required description
string string YES 要匹配正则表达式的字符串。

Return value

Type description
RegExpExecArray | null 如果匹配失败,exec() 方法返回 null,并将正则表达式的 lastIndex 重置为 0。如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应一个匹配的捕获组。
const regex1 = RegExp('foo*', 'g');
const str1 = 'table football, foosball';
let array1;

while ((array1 = regex1.exec(str1)) !== null) {
  console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
  // expected output: "Found foo. Next starts at 9."
  // expected output: "Found foo. Next starts at 19."
}

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# test(string)

执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。

Parameters

name type required description
string string YES 用来与正则表达式匹配的字符串。

Return value

Type description
boolean 如果正则表达式与指定的字符串匹配,返回true;否则false。如果正则表达式设置了全局标志,test() 的执行会改变正则表达式 lastIndex属性。连续的执行test()方法,后续的执行将会从 lastIndex 处开始匹配字符串。
const str = 'table football';

const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');

console.log(regex.test(str));
// expected output: true

console.log(globalRegex.lastIndex);
// expected output: 0

console.log(globalRegex.test(str));
// expected output: true

console.log(globalRegex.lastIndex);
// expected output: 9

console.log(globalRegex.test(str));
// expected output: false

Compatibility

Android version Android uni-app Android uni-app-x iOS version iOS uni-app iOS uni-app-x
4.4 3.9.0 9.0 x

# Bug & Tips

  • 目前 RegExp 类型编译到 kotlin 为 io.dcloud.uts.UTSRegExp