2011-06-20 31 views
-1

...私は... JavaScriptで正規表現になっていると私は自分自身を上行っているように見えると混同'RegExp'と正規表現の違いは?

いくつかここにグーグルで、私に何か良いのいずれか...

がしませんでした私はここで何かが欠け

var str = "Hello!"; 
var x = new RegExp(...); 
document.write = x.eval(str); 

アム:

私はのJavascriptの構文を知っていますか?

編集:明らかに私は明確ではありませんでした...私はJavascriptの正規表現を初めて使用しています。私の理解から、正規表現と正規表現は異なっています。もしそうなら、違いは何ですか?

+2

をあなたの正確な問題は何ですか? – Joey

+1

タイトルはあなたの質問の本文とどのように関連していますか? –

+2

"Regexp"と "regex"は、 "正規表現"の2つの一般的な略語です。それは混乱の源ですか? –

答えて

3

"RegExpクラス" 構文があります。

var pattern = new RegExp("/[a-z]+/","i"); 

と "正規表現リテラル" 構文:

var pattern = /[a-z]+/i; 

THESの各自分のアドバタイズを持っています。クラス構文は変数を扱うことができるので、動的正規表現を作成することができます。一方、リテラルsystaxは短くなり、そんなにエスケープする必要はありません。

あなたのパターンを持っていたら、例えば、いくつかの正規表現方法、使用することができます。

text.match(pattern); 
text.replace(pattern,replacement); 

pattern.exec(text); 
pattern.test(text); 
4

JavaScriptのRegExpインスタンスにはevalの機能がありません。execまたはtestと考えている可能性があります。

例:

var rex = /^\d+$/; 
//Or var rex = new RegExp("^\\d+$"); 
//Note how within quotes you have to escape backslashes 

if (rex.test(someValue)) { 
    display("Yup, it's all digits"); 
} 
else { 
    display("Nope, there are non-digits there or it's blank."); 
} 

Live copy

+0

Firefoxに依存しているようです;)https:// developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Object/Eval(しかし、当然のことながら、期待していることはしません)。 –

+0

@Felix:これは標準ではありません。 ECMAScript *の 'RegExp'はそれを持っていないと言わなければなりません(JavaScriptはまだMozillaにライセンスされているOracleの商標です)。 –

+0

実際に私は冗談を言っていた... :) –

関連する問題