Небольшой пример, чтобы было нагляднее:
alert(/([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g.test("."));
alert(/([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g.test("."))
alert(/([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g.test("."))
alert(/([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g.test("."))
var re = /([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g;
alert(re.test("."));
alert(re.test("."));
alert(re.test("."));
alert(re.test("."));
В чем разница? Почему разные результаты?