请考虑以下示例:
<html>
<body>
<script type="text/javascript">
var str="filename.jpg";
var pattOne = new RegExp('\.[^\.]*$');
var pattTwo = new RegExp('(\.[^\.]*$)');
var pattThree = new RegExp('(\.[^\.]*$)', 'g');
document.write(str.match(pattOne));
document.write('<br>');
document.write(str.match(pattTwo));
document.write('<br>');
document.write(str.match(pattThree));
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果如下:
.jpg
.jpg,.jpg
.jpg
Run Code Online (Sandbox Code Playgroud)
我期待这个结果:
.jpg
.jpg
.jpg
Run Code Online (Sandbox Code Playgroud)
为什么在正则表达式周围放置括号会改变结果?为什么使用'g'修饰符会再次改变结果?
为什么
"abc123".match(/(\d{3})/)
Run Code Online (Sandbox Code Playgroud)
返回
[ "123", "123" ]
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
["123"]
Run Code Online (Sandbox Code Playgroud)
表达式不等于正好找到三位数字吗?