String.prototype.isWellFormed()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2023å¹´10æ.
isWellFormed() 㯠String å¤ã®ã¡ã½ããã§ããã®æååã«å¤ç«ãµãã²ã¼ãããããã©ããã示ãè«çå¤ãè¿ãã¾ãã
æ§æ
isWellFormed()
弿°
ãªãã
è¿å¤
ãã®æååã«å¤ç«ãµãã²ã¼ãããªãå ´å㯠trueãããã§ãªãã° falseã
解説
JavaScript ã®æåå㯠UTF-16 ã¨ã³ã³ã¼ãã§ããUTF-16 ã¨ã³ã³ã¼ãã£ã³ã°ã«ã¯ããµãã²ã¼ããã¢ãã®æ¦å¿µããããUTF-16 æåãUnicode ã³ã¼ããã¤ã³ããæ¸è¨ç´ ã¯ã©ã¹ã¿ã¼ã®ç¯ã§è©³ããç´¹ä»ããã¦ãã¾ãã
isWellFormed() ã使ãã¨ãæååãæ´å½¢å¼ã§ãããã©ããï¼ã¤ã¾ããå¤ç«ãµãã²ã¼ããå«ã¾ãªããã©ããï¼ããã¹ããããã¨ãã§ãã¾ãã ã«ã¹ã¿ã å®è£
ã¨æ¯ã¹ãã¨ãisWellFormed() ã¯ãã¨ã³ã¸ã³ãæååã®å
é¨è¡¨ç¾ã«ç´æ¥ã¢ã¯ã»ã¹ã§ããã®ã§ãããå¹ççã§ãã æååãæ´å½¢å¼æååã«å¤æããå¿
è¦ãããå ´åã¯ãtoWellFormed() ã¡ã½ããã使ã£ã¦ãã ããã isWellFormed() ã使ãã¨ãæ´å½¢å¼ã§ãªãæååãæ´å½¢å¼æååã¨ã¯ç°ãªãå½¢ã§æ±ããã¨ãã§ããä¾ãã°ãã¨ã©ã¼ãçºçãããããç¡å¹ã¨ããããããã¨ãã§ãã¾ãã
ä¾
>isWellFormed() ã®ä½¿ç¨
const strings = [
// å¤ç«ä¸ä½ãµãã²ã¼ã
"ab\uD800",
"ab\uD800c",
// å¤ç«ä¸ä½ãµãã²ã¼ã
"\uDFFFab",
"c\uDFFFab",
// æ´å½¢å¼
"abc",
"ab\uD83D\uDE04c",
];
for (const str of strings) {
console.log(str.isWellFormed());
}
// Logs:
// false
// false
// false
// false
// true
// true
encodeURI() ã®ã¨ã©ã¼ãåé¿
encodeURI ã¯æ¸¡ãããæååãæ´å½¢å¼ã§ãªãã£ãå ´åã«ã¨ã©ã¼ãçºçãã¾ãããã㯠isWellFormed() ã使ç¨ãã¦ãæååã encodeURI() ã«æ¸¡ãåã«æ¤æ»ãããã¨ã§åé¿ã§ãã¾ãã
const illFormed = "https://example.com/search?q=\uD800";
try {
encodeURI(illFormed);
} catch (e) {
console.log(e); // URIError: URI malformed
}
if (illFormed.isWellFormed()) {
console.log(encodeURI(illFormed));
} else {
console.warn("æ´å½¢å¼ã§ãªãæååã«ééãã¾ããã"); // æ´å½¢å¼ã§ãªãæååã«ééãã¾ããã
}
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.iswellformed> |