一つ目の正規表現が一致しません。 "\d" は、結局 "d" なので、正規表現のメタ文字にはなりません。 つまり、一つ目は以下のように指定する必要があります pat = new RegExp("([^\\d]+?)([\-]?\\d+)\,([\-]?\\d+)"); ( 外部から入力される時は \d でいい事になります )
str = "PE-100,120"; pat = new RegExp("([^\d]+?)([\-]?\d+)\,([\-]?\d+)"); alert(str.match( pat )); alert( RegExp.$1 + "|" + RegExp.$2 + "|" + RegExp.$3 ); pat = new RegExp("([^0-9]+?)([\-]?[0-9]+)\,([\-]?[0-9]+)"); alert(str.match( pat )); alert( RegExp.$1 + "|" + RegExp.$2 + "|" + RegExp.$3 ); alert(str.match( /([^\d]+?)([\-]?\d+)\,([\-]?\d+)/ )); alert( RegExp.$1 + "|" + RegExp.$2 + "|" + RegExp.$3 );
タグ:javascript
|