web-dev-qa-db-ja.com

querySelectorAllで正規表現を使用できますか?

私がやっているページでは、次のようなカスタムlink要素になります。

<link rel="multiply" type="service/math" src="path/to/service">
<link rel="substract" type="service/math" src="path/to/service">
...

タイプservice/...が指定されているすべてのリンク要素を取得するためにquerySelectorAllを使用しようとしていますが、どこにも行きません。

現在、私はこれを選択しています:

root.querySelectorAll('link');

タイプ<link>の要素のみが必要な場合に、すべてのservice/.*要素を提供します

質問:
正規表現をQSAセレクターに追加できますか?もしそうなら、それを行う方法?

36
frequent

セレクターで正規表現を実際に使用することはできませんが、CSSセレクターは、正規表現に触発された「で始まる」構文で必要に応じて十分に強力です。

属性セレクターに一致するサブストリングを使用できます:link[type^=service]

「属性linkが「service」で始まるtype型のノード」を読み取ります

正式な仕様 から:

[att ^ = val]

値が接頭辞「val」で始まるatt属性を持つ要素を表します。 「val」が空の文字列の場合、セレクターは何も表しません。

ワーキングJSFiddle

64