1
"foo = '@test.bar';\nfooa = @test.darn;".match(/@([a-z][a-z\.-_]*)/igm)

なぜこれが一致するのか

["@test.bar", "@test.darn;"]

だけではなく

["@test.bar", "@test.darn"]

?

4

1 に答える 1

5

文字クラスでは、一部の文字に特別な意味があります。たとえば、ドットには何も含まれておらず、エスケープする必要はありません。対照的に、マイナスは文字の範囲を定義します。文字通りマイナスを意味する場合は、それをエスケープするか、文字クラスの末尾/先頭に配置する必要があります。.からまでの範囲には、_実際には が含まれます./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_。代わりに[a-z.\-_]orを使用することもできます。[a-z._-]

于 2013-01-21T00:44:58.573 に答える