4
<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"; これは機能しません

この場合、文字列を有効な正規表現に変換するにはどうすればよいですか?

ありがとう

4

2 に答える 2

7

正規表現リテラル表記または RegExp コンストラクターを使用して、2 つの方法で正規表現を作成できます。2つを混同しているようです。:)

文字通りの方法は次のとおりです。

var regex = /[^\d]/g;

この場合、使用引用符はありません。末尾の / 文字は区切り文字として機能し、最後にフラグを指定します。

パターンとフラグ (オプション) を文字列として渡す RegExp コンストラクターの使用方法を次に示します。文字列を使用する場合は、'\' を使用して文字列内の特殊文字をエスケープする必要があります。

'\' (バックスラッシュ) は特殊文字であるため、二重引用符を使用する場合は、別のバックスラッシュを使用してバックスラッシュをエスケープする必要があります。

var regex = new RegExp("[^\\d]", "g");

これが理にかなっていることを願っています。

于 2012-11-27T12:56:46.963 に答える
1

slash( \) は文字列に対して特別な意味を持つため (例: "\n"、"\t" など)、正規表現に渡すときはその記号をエスケープする必要があります。

var regex = "[^\\d]";

gまた、式フラグ (iなど) は、 の別のパラメータとして渡す必要がありますRegExp。全体的に:

var regex = "[^\\d]";
var flags = "g";
var regObj = new RegExp(regex, flags);
于 2012-11-27T12:58:19.337 に答える