2017-01-04 6 views
0

24時間以内に時刻形式を一致させるための正規表現を持っています 受け入れ可能なフォーマットは1:00、01:00、100、0100などです。 23時間JavaScriptの正規表現は、オンラインテストサイトでは一致しますが、コードでは間違っています

しかし、また、私は特別なケースを持っている - 私は受け入れるように可用性を必要とする1:00 *、01:00 *または100 * DSTのための遷移時間

ので、それは基本的に2つの正規表現の式の連結だ

これは正規表現の文字列です ^(0?1:?[0-5][0-9]\*)|((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$

それは私が^とし、$各サブ後ということに変更した時刻文字列

後に任意のシンボルのための偽の一致を返し

var r = new RegExp('^(0?1:?[0-5][0-9]\*)|((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$'); 
    var b1 = r.test("1:00"); // true 
    var b2 = r.test("1:00*"); // true 
    var b3 = r.test("1:00&"); // true - wrong 
    var b4 = r.test("1:00#"); // true - wrong 

https://regex101.com/

http://www.regexplanet.com/

コードで
1:00 - true 
    1:00* - true 
    1:00& - false 
    2:00 - true 

- 表現

^(0?1:?[0-5][0-9]\*)$|^((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$

オンラインテスト:コード内

1:00 - true 
    1:00* - true 
    1:00& - false 
    2:00 - true 

:それがあるべきよう

var r = new RegExp('^(0?1:?[0-5][0-9]\*)$|^((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$'); 
    var b1 = r.test("1:00"); // true 
    var b2 = r.test("1:00*"); // false - wrong 
    var b3 = r.test("1:00&"); // false 
    var b4 = r.test("1:00#"); // false 

だから、両方のケースでは、オンラインテストは動作しますが、コードではそうではありません。 何が問題なのですか?

Extjs 4.2.3では、テキストフィールドの検証にこのフォームを使用できないため、 '/ ^(0?1:?[0-5] [0-9] *)$ form'は使用できません。私はこのような工事でフォームフィールド検証のためにそれを使用します。

regex: new RegExp('^(0?1:?[0-5][0-9]\*)$|((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$'), 
    regexText: 'Not a valid time. Accepted formats: HMM, H:MM, HHMM, HH:MM, 1:MM*, 01:MM*, 1MM*' 

答えて

1

あなたは一度だけ正規表現のために、一度文字列のため、* 2回をエスケープする必要があります。

var r = new RegExp('^(0?1:?[0-5][0-9]\\*)|((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$'); 

たりすることができますこれを言う:

var r = /^(0?1:?[0-5][0-9]\*)|((0[0-9]|1[0-9]|2[0-3]|[0-9]):?[0-5][0-9])$/ 

だけで理解するために、コンソールでこれらを試してみてください。

var str = '\*'; 
console.log(str); // * 

var r = new RegExp('[0-9]\*'); 
console.log(r); // /[0-9]*/ 

var str = '\\*'; 
console.log(str); // \* 

var r = new RegExp('[0-9]\\*'); 
console.log(r); // /[0-9]\*/ 
関連する問題