hasもjQuery系かどこかのライブラリが元
機能的にしょぼいのは生まれた当時都合
それ以上の機能が求められていなかった
コストが高くて採用できないなど
生まれた当時のjsの範囲しかできない
querySelectorAll()はIE全盛期は使えなかった
実装はライブラリ依存

実装知りたければコード読めになる
https://github.com/AdguardTeam/ExtendedCss
https://github.com/AdguardTeam/sizzle-extcss
ExtendedCssを斜め読みする限りcontainsそれらは等価

has正規表現でなにしたいのかわからないけどjavascript-rulesあるんだからやりたければそれ
たぶんhas正規表現も必要ない
具体的に何がしたいか書けと思う