javascript - 为什么 Regex.toString() 不等于 javascript 中的字符串文字

标签 javascript regex string-literals

console.log(/\.js$/.toString() === '/\.js$/') // false
// or
console.log(/\.js$/.toString() == '/\.js$/') // false
   
// but
console.log(/\.js$/.toString()) // /\.js$/
console.log(/\.js$/.toString() === /\.js$/.toString()) // true

最佳答案

因为转换为字符串后,\的含义发生了变化。在字符串中,它用于转义字符,例如\n\t。在正则表达式中,这意味着按字面意思获取下一个字符,例如您的情况下的 . 。因此,转换为字符串时 \ 必须进行转义,因此 /\.js$/ 变为 "/\\.js$/" 。请注意,如果您随后将其输入到 RegExp 构造函数中,则 "\\.js$" 将有效,而 "\.js$" > 将具有不同的含义,并被解释为 /.js$/

关于javascript - 为什么 Regex.toString() 不等于 javascript 中的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49340770/

相关文章:

javascript - 如何将 URL trim/剥离为页面名称?

javascript - 如何使用jquery添加弹出窗口?

regex - 是否可以?匹配完全相同数量的左括号和右括号

regex - 获取一个xml文件中的多个值

javascript - 如何使用 javascript onclick() 获取元素的属性值?

javascript - 根据浏览器运行不同的 JavaScript

java - 使用正则表达式在索引附近的未封闭组

c - 为什么它们都指向同一个地方?

c - 警告 : missing terminating "character [enabled by default]

python - 这些不同的字符串格式化调用有哪些优点?