1

相対(任意)単位を表す文字列の部分を一致させたい。たとえば、「+=50foo」、「-=300bar」、「-3%」などです。私はほとんどそこにいますが、一部の入力で奇妙なエラーが発生し、パターンや修正が表示されません。

var myRegEx = new RegExp( "^([+-])=(\\d+\.?\\d*)(\\D+)$", "i" );

console.log(myRegEx.exec("-=5%")); // good
console.log(myRegEx.exec("+=3.14wigs")); // good
console.log(myRegEx.exec("+=50px")); // broken: "50p", "x"
console.log(myRegEx.exec("+=49999999px")); // broken: "49999999p", "x"
console.log(myRegEx.exec("+=100em")); // broken: "100e" , "m"

http://jsfiddle.net/sNd9W/

4

3 に答える 3

1

これはよりクリーンなソリューションです。

var myRegEx = /^([+-])=(\d+\.?\d*)(\D+)$/i;

二重引用符で囲まれた文字列が独自のエスケープを行っているため、ソリューションはピリオドを正しく二重エスケープしませんでした (\. があり、\\. が必要です)。簡単にするために、文字列はまったく使用しませんでした。

実際の例: http://jsfiddle.net/sNd9W/2/

于 2013-08-13T22:56:35.730 に答える
1

\これは機能するはずです(ドットの近くに追加に注意してください):

var myRegEx = new RegExp( "^([+-])=(\\d+\\.?\\d*)(\\D+)$", "i" );
于 2013-08-13T22:51:25.927 に答える
-1
var myRegEx = /^([+-])=([\d.]+)(.+)$/i;

http://jsfiddle.net/sNd9W/3/

最初のキャプチャ グループは +/- です。 2 番目は数値および 10 進数のグループです。

于 2013-08-13T22:56:39.150 に答える