2011-10-27 9 views
1

私はちょうど正規表現の検証がjavascriptでどのように機能するのだろうかと思っています。クイック正規表現とjavascriptの問い合わせ

「test」という単語があり、正規表現「/ [A-Za-z] /」を使用してテストしてテキストのみであることを確認したいとします。

trueまたはfalseを返しますか?

「マッチを見つけました」という言葉が多用されていますので、マッチすると真を返すかどうか疑問に思っています。あなたは、文字列全体が文字だけであるかどうかを確認したい場合は

おかげ

+2

アルファベットのみのテキストであるかどうかを確認したい場合は、その正規表現は完全ではありません。 –

答えて

5

はその後

if (theString.match(/^[A-Za-z]+$/)) { 
    // It's only text 
} 

^$の使用は、入力に部分一致を防ぐためにここで重要なん。

2

trueまたはfalseに評価されるWheterは、正規表現によって異なります。

例では、テストする文字列に少なくとも1つの小文字または小文字が含まれている場合、/[A-Za-z]/はtrueを返します。

あなたは文字列は文字だけが含まれていることをテストする場合^[a-zA-Z]+$

+0

それがあるので、そこにあるべきではない文字を見つけたらfalseを返します! – TheGateKeeper

+0

thatsポイント!この場合、空白であっても無効とみなされます。 –

1

に私は単語「test」を持っていると私はそれをテストしたいと言うように、あなたの正規表現は、その文字列内のすべての文字をテストする必要がありますが正規表現 "/ [A-Za-z] /"を使用して、テキストのみかどうかを確認してください。

trueまたはfalseを返しますか?

あなたは正規表現を実行するためのJavaScriptの試合()メソッドを使用していると仮定すると、あなたの正規表現は、を返します。

正規表現は、文字列全体にテキストが含まれているかどうかを完全にテストするには不十分です。まず、テキストの定義は何ですか?英数字ですか?スペースと句読点はどうですか?

正規表現に最初の一致が含まれている場合は、グローバル演算子を指定しない限り、真を返します。

あなたの場合、大文字と小文字を区別しない1文字の英字を検索しています。したがって、最初の文字 "t"が正規表現に一致すると、 "test"という単語がtrueを返します。

あなたの正規表現は、以下のためにtrueを返します

test123 
[email protected]# 
t'is 
This is a sentence with 6 words 

あなたは文字列全体を一致させたい場合は、あなたの正規表現は、あなたがしたいことを示すために^$記号を含める必要があります。文字列全体を一致させ、複数の文字を許可することを示すために+シンボルを使用します。

+0

test123でtrueになるのはなぜですか?これには数字 – TheGateKeeper

+2

が含まれています。「あなたの正規表現は1つのアルファベット文字を検索しています」ので、最初の文字と一致し、その文字列全体に真の一致を返します。 –

+0

ありがとう、ありがとう。だから、もし私が "/^[a-zA-Z] + $ /"を以下のように使用しているのであれば、 "123456"のような入力に対して本当に戻ります。 – TheGateKeeper

1

regexpが返すものは、正規表現によって異なります。私は式に応じて、あなたにそれを返すかの一般的なアイデアを与える必要があり、私のコンソールの出力を、あげる:

var sampleString = 'someString'; 

// Search for only 1 or more characters 
sampleString.match(/[a-zA-Z]+/); 
>> ["someString"] 

// Search for single characters 
sampleString.match(/[a-zA-Z]/g); 
>> ["s", "o", "m", "e", "S", "t", "r", "i", "n", "g"] 

// Search for single digits - none to be found, returns null 
sampleString.match(/[0-9]/g); 
>> null 

を結果として偽の真のいずれかを取得するには、あなたがする必要があるだろうRegExpオブジェクトを使用します。次の例を見てください。

var sampleString = 'someString'; 
// Note that the expression isn't between slashes, and the extra argument for flags 
var regexp = new RegExp('[a-zA-Z]+', 'g'); 

// using regexp object, things go the other way around 
regexp.test(sampleString); 

>> true 
+0

ありがとう、しかし、私はそれがjavascriptで動作する方法を尋ねていた – TheGateKeeper

+0

@ TheGateKeeperそれはJavascriptです。それは可能な限りJavascriptと同じです。多分あなたはコンソールの部分で混乱していたでしょうか?これは、開発者がChromeでCtrl + Shift + Jを押して表示できることを意味しています。そこにjavascriptを入力すれば、実行されます。さまざまなコードスニペットを試す非常に便利な方法です。 – zatatatata

1

質問は、約javascriptの正規表現、マッチが間違っているときのリターンがtrueであると言うすべての答えを要求しますので。正しいのは、javacript match()のメソッド

が一致するものがない場合はnullを返します。

+1

Im使用: var regex =/^ [a-z A-Z] + $ /; var check = regex.test($( 'tbName')。val()); これは何を返しますか? – TheGateKeeper

+0

マッチで 'true'を返します。私が知らなかった正規表現オブジェクトです。私はstringの 'match()'メソッドを使用していました。それから私の答えは、 'match()' stringメソッドにのみ当てはまると思われます。 –

1

どのように正規表現を使用するかによって異なります。あなたは、単に文字列が唯一のアルファ文字が含まれ、これは

function validateAlpha(s){ 
    return (!s.match(/[^A-Za-z]/)); 
} 

//Usage 
var isValid = validateAlpha("test"); 

お知らせ「^」正規表現で働く必要があることをテストしていると仮定すると、

。これは、その範囲に収まらない文字があれば、一致があることを示します。この場合、有効であるかどうかを返すために反転します(!)。

あなたの質問に答えるために、はい、String.match関数は、一致が見つかるとtrueを返し、キャプチャ括弧が使用されている場合は一致の配列を返します。