iOSでsafariのみ一部javascriptが実行されない現象について

iOSでsafariのみ一部javascriptが実行されない現象についてのメモ。

PCやAndroidでは正常に動作していたjavascriptの実装が、iOSでのみ動作しないケースがあったので記録しておきます。

今回iOSのみ正常動作しなかったコード

//<div class="item">aaa[1234]</div> の1234のみを取得する

document.querySelectorAll('.item')[0].innerText.match(/(?<=\[).*?(?=\])/)); 

下記に変更すると動作を確認

//<div class="item">aaa[1234]</div> の1234のみを取得する

document.querySelectorAll('.item')[0].innerText.match(/(?=\[).*?(?=\])/)); 

iOSでは一部の正規表現でjavascriptの実行が停止される

どうもiOSでは肯定後読みの演算子を認識しない模様。

正規表現の肯定後読みの記述を以下のように変更。
肯定先読みの後にマッチ文字を削除。

?<= 
↓
?=
var txt = document.querySelectorAll('.item')[0].innerText.match(/(?=\[).*?(?=\])/)); 
var txt2 = txt.replace( /[/g , "" ) ;

類似のケースがstackoverflowにあり。

Equivalent Regex Unsupported lookbehind assertion IOS Safari

https://stackoverflow.com/questions/64410005/equivalent-regex-unsupported-lookbehind-assertion-ios-safari

どうやらiOSには正規表現で使用できない記述があるようで、かつエラーにならず途中で処理が落ちるので注意が必要。iOSは実機デバッグがやはり必須。

この記事のご感想やコメントはこちら

メールアドレスが公開されることはありません。 が付いている欄は必須項目です