0

正規表現を書いた文字列を定義する変数名をjavascriptで取得したい

var x = "sdfsfsdf";

((\w.*?)(\s*=\s*)(['"]*)(.+?)(['"]*)\1)

この式の問題は、上記のコードを考慮してRegExp.$2変数名を取得する必要がある場合です。xいくつかの式では問題なく動作しますが、次のようなコードがある場合

function(a) {var b = document.createElement("script");}

結果はfunction(a){var bです。

どちらの場合でも機能するように、正規表現を変更するのを手伝ってください。

var注: javascript 変数は、 ieなしで宣言することもできます。x = "sdfsfsf";

4

3 に答える 3

0
/(^|;|{)\s*(var\s+)?(\S+)\s*=\s*['"][^'"]*['"]\s*(}|;|$)/i

(^|;|{)          at the beginning, after a semicolon or the bracket
\s*              0-n whitespace characters
(var\s+)?        could be followed by "var" with at least one whitespace
(\S+)            at least one none whitespace character
\s*=\s*          equal sign with possibly surrounded whitespaces
['"][^'"]*['"]   a 'string'
\s*(}|;|$)       have to end with the bracket or a semicolon or the end of the variable has been reached

この例も参照してください。

于 2012-04-10T06:19:57.470 に答える
0

文字列があまりクレイジーでない場合は、これを試すことができます。

/[a-z_$][a-z0-9$_]*\s*=\s*.*?(;|$)/gi

テスト:

> var r = /[a-z_$][a-z0-9$_]*\s*=\s*.*?(;|$)/gi;
  undefined
> 'var x = "sdfsfsdf";'.match(r);
  ["x = "sdfsfsdf";"]
> 'function(a) {var b = document.createElement("script");}'.match(r);
  ["b = document.createElement("script");"]
于 2012-04-10T05:57:07.303 に答える
-1

この正規表現を試してください:([^\w]?(\w.*?)(\s*=\s*)(['"]*)(.+?)(['"]*)\1)

于 2012-04-10T05:46:14.047 に答える