アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

Kotlin MPP JSのその他のプラットフォームと動作が異なる正規表現【Lone quantifier brackets】

この様なコードがあります。Kotlin JVMでは問題なく動きます。

"}".toRegex()

Kotlin/JSでは以下のエラーになります。

regex.kt:77 Uncaught SyntaxError: Invalid regular expression: /}/gu: Lone quantifier brackets 

この様に書かなければなりません。

"\\}".toRegex()

IDEでは直すようにサジェストされるのがまたややこしいです。

サジェストされないようにコンパイラやコードで設定しましょう。

@Suppress("RegExpRedundantEscape")

KotlinのRegexのドキュメントを読むと、動作が異なる事が記述されています。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/

マルチプラットフォームなんだから互換性保ってくれ」vs「プラットフォームが提供するものに更に手を入れるとバグが増す」vs「Kotlinが正規表現の機能をバンドルするとバイナリサイズが増加する」の3つの気持ちが混在しています。