在JavaScript中,空正则表达式模式是否定义了行为
In JavaScript, does an empty regex pattern have defined behavior?
var pattern = /(?:)/
从我的测试来看,它似乎与一切都匹配。这是定义的行为吗?
这并不能直接回答这个问题,但以下是规范对空正则表达式的说明:
从15.5.4.14 String.prototype.split(分隔符,限制(
分隔符的值可以是空字符串、空正则表达式或可以匹配空字符串的正则表达式。
以及7.8.5正则表达式文字
注:正则表达式文字不能为空;字符//不是表示一个空的正则表达式文字,而是以单行注释开头。要指定一个空的正则表达式,请使用:
/(?:)/
。
因此,假设它是.split()
中分隔符的可接受值,我猜它是定义的行为,是对每个字符进行拆分的一种方式。
"fjeij;als#%^&é.'n isoij't;oi`1=+-]'r".split(/(?:)/);
["f", "j", "e", "i", "j", ";", "a", "l", "s", "#", "%", "^", "&", "é", ".", "
", " ", "i", "s", "o", "i", "j", " ", ";", "o", "i", "`", "1", "=", "+", "-", "]", "
"]
/(?:)/
匹配"nothing",它匹配所有内容。什么都没有。呵呵
是的,我很期待。
相关文章:
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- 如何在JavaScript中检查变量是否为null和/或未定义
- 检查对象的所有属性是否未定义
- 如何查看变量名称是否已在Javascript中定义
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- 是否可以替换或自定义getUserMedia提示
- 是否可以在定义对象时访问对象值
- 是否可以在AlloyUI中拥有自定义连接器
- 是否可以通过Primefaces 3.3的自定义对话框取消Ajax请求
- AngularJs 检查是否未定义和空的最佳实践
- 如何检查服务器是否返回未定义然后忽略它
- 我是否必须在每个文件中引用 TypeScript 定义
- 如何确定控件/插件是否从 CRM 2011 中功能区上的自定义按钮触发
- 检查未定义是否不起作用
- 这些JavaScript包含定义是否有区别
- angular是如何定义是否应该使用某个编译器的?
- 检查变量(定义)是否在JavaScript中不起作用
- Raphael / SVG路径定义是否总是以'M'开头?(如果不是,这样的路径的原点是否总是0,0?)