JavaScript RegExp 忽略案例标志与全局匹配标志
JavaScript RegExp ignore case flag vs global match flag
这是标志忽略情况的代码示例。预计我只会收到一场比赛。
var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/i);
结果
a = [桑普] [上午] [p]
我应该有一个 = [桑普]
如果您将 i 标志更改为 g
var str = "Sample text";
var a = new Array();
a = str.match(/S(am)(p)/g);
令人惊讶(至少对我来说)结果只有一个元素
a = [桑普]
javascript 正则表达式 API 非常不直观,因为它根据 g
标志执行各种魔术。
我只是要介绍.match
的行为方式:
-
如果没有
g
-flag.match
将返回一个完全匹配的数组以及所有捕获组或null
(如果没有匹配)。 -
使用
g
-flag.match
返回所有完整匹配项的数组,捕获组不会产生任何影响。 如果没有匹配项,则null
。
a = str.match(/S(am)(p)/i);
返回第一个匹配的字符串,$1 $2
a = str.match(/S(am)(p)/g);
返回匹配数组(此处只有一个)
如果你的字符串像那样贴花
var str = "Sample text Sample text";
/g 返回 Samp Samp,当您的正则表达式看起来像/S(.m)(p)/g
而字符串看起来像"Sample text Simple text";
时,它很有用
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 全局对象是属于哪个类的对象
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- 访问jsrender模板中的全局javascript变量并更新它
- javascript无法重新定义函数内部的全局对象
- 全局标志仅与第一个匹配项匹配的Regexp
- JavaScript RegExp 忽略案例标志与全局匹配标志
- 用作标志的Javascript全局变量
- 当与全局标志一起使用时,Javascript Regex在后续调用中返回null
- Javascript正则表达式奇怪的匹配没有全局标志
- 谷歌浏览器扩展弄乱了正则表达式全局标志
- 为什么不'当存在全局标志时,String.match()会产生预期的结果
- Regex:没有全局标志的重复捕获组
- 使用全局标志,我无法检测单词'blue'
- 带全局标志的正则表达式在Javascript中不起作用