<script>
var String = "1 Apple and 13 Oranges";
var regex = /[^\d]/g;
var regObj = new RegExp(regex);
document.write(String.replace(regObj,''));
</script>
它工作正常 - 返回字符串中的所有数字。
但是当我像这样在正则表达式周围加上引号时:
var regex = "/[^\d]/g";
这行不通。
在这种情况下,如何将字符串转换为有效的正则表达式?
谢谢
最佳答案
您可以通过两种方式创建正则表达式,使用正则表达式文字符号或 RegExp 构造函数。看来你把两者搞混了。 :)
这里是字面的方式:
var regex = /[^\d]/g;
在这种情况下,您没有使用引号。/末尾的字符作为分隔符,您在末尾指定标志。
这里是如何使用 RegExp 构造函数,在其中将模式和标志(可选)作为字符串传递。当您使用字符串时,您必须使用“\”转义其中的任何特殊字符。
由于“\”(反斜杠)是一个特殊字符,如果您使用双引号,则必须使用另一个反斜杠对反斜杠进行转义。
var regex = new RegExp("[^\\d]", "g");
希望这是有道理的。
关于javascript - 用js构建正则表达式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13584655/