我正在尝试制作一个正则表达式来计算引号内的每个问号。这个正则表达式正在 javascript 中进行测试,但如果这很重要,我打算将它用于 PHP。我有一些这样的作品,但还不够好。
这里是。
/(\"|\')(([^\"\'\\]|\\.)*)\?(([^\"\'\\]|\\.)*(\"|\'))/g
正如您可能看到的,我也想忽略转义引号。
说我有字符串"hello? \"world?\""
。这将返回正确的 1。
但至于这个"hello? \"world??\""
。这也将返回 1,但我想要的是 2。我怎样才能做到这一点?
如果我能得到一个与此完全相反的正则表达式(计算不在引号中的问号),我也会非常喜欢。
如果有帮助,这是用于此测试的整个函数。
function countTest(str) {
regx = /(\"|\')(([^\"\'\\]|\\.)*)\?(([^\"\'\\]|\\.)*(\"|\'))/g;
test = str.match(regx);
test = test ? test.length : 0;
console.log(test);
}
编辑:
还!我从我自己在这个问题中的拼写错误中注意到,字符串hello \"world?\'"
也将返回 1。不过,这似乎很容易解决。