2016-05-11 4 views
0

基本的なnode.js正規表現構文で何か不足していますか?node.jsは文字パターンを認識しますが、数字パターンは認識しません

私が^で始まるか$で終わるならば、私はこれらの出力を得るために正規表現構文で不足している問題ではありません:

var Regex = require("regex"); 
//var Regex = require("regexp"); //performs the same with both 


var regex = new Regex(/(a|b)*abb/); 
console.log("The pattern matches: " + regex.test("abb")); // true 

//Match a decimal number in sqaure brackets 
var regex1 = new Regex(/\d/); 
console.log("The pattern matches: " + regex1.test("9")); 

var regex2 = new Regex(/^\d$/); 
console.log("The pattern matches: " + regex2.test("9")); 

var regex3 = new Regex(/^\d$/); 
console.log("The pattern matches: " + regex3.test("9")); 


var regex4 = new Regex(/^\[\d\.\d\]$/); 
console.log("The pattern matches: " + regex4.test("[9.9]")); 

var regex5 = new Regex(/^\[[0-9]\.[0-9]\]$/); 
console.log("The pattern matches: " +regex5.test("[9.9]")); 

出力:

C:\nodeapps\CSV IO>node regexTest.js 

    The pattern matches: true 

    The pattern matches: false 

    The pattern matches: false 

    The pattern matches: false 

    The pattern matches: false 

    The pattern matches: false 

が、私は構文的アム何か見ていない?

+0

基本的な正規表現である '( "正規表現")' – YOU

+1

ちょうど ''すべての新しい正規表現を( '...')削除を要求するようにあなたを必要としません。プレーンな正規表現リテラルを使用してください。 'var regex1 =/\ d /;'は動作するはずです。 –

+0

ヒント:正規表現とターゲット文字列、および結果が含まれていると、出力がより便利になります。私たちが見ているテストを見るためにページをスキャンし直すことは迷惑であり、私たちはこれを利害を失い、別の質問に移す可能性がより高くなります。 –

答えて

1

require( "regex")は必要ありません。 そのまま削除して使用してください。デフォルトのjavascript RegExpが動作します。

Modfiedコードが

var regex = new RegExp(/(a|b)*abb/); 
console.log("The pattern matches: " + regex.test("abb")); // true 

//Match a decimal number in sqaure brackets 
var regex1 = new RegExp(/\d/); 
console.log("The pattern matches: " + regex1.test("9")); 

var regex2 = new RegExp(/^\d$/); 
console.log("The pattern matches: " + regex2.test("9")); 

var regex3 = new RegExp(/^\d$/); 
console.log("The pattern matches: " + regex3.test("9")); 


var regex4 = new RegExp(/^\[\d\.\d\]$/); 
console.log("The pattern matches: " + regex4.test("[9.9]")); 

var regex5 = new RegExp(/^\[[0-9]\.[0-9]\]$/); 
console.log("The pattern matches: " +regex5.test("[9.9]")); 
+0

これは、私が言ったように、正規表現のパターンがあらかじめわかっている(静的である)場合は、正規表現の文字表記が優先されると、すべてのブラウザで期待通りに機能しない可能性があります。 –

+1

@WiktorStribiżewブラウザ間での機能には影響しません。また、お客様の要件に応じて、クライアント側のブラウザとは独立したサーバー側でRegExテストを実行しています。あなたのケースでは完璧に動作します。 –

関連する問題