如何检查字符串中是否包含非换行空格(non-breaking space)字符?
如何检查字符串中是否包含非换行空格(Non-breaking Space)
问题核心很明确:你之前的代码在匹配HTML实体字面量 ,但实际要找的是Unicode编码为U+00A0的非换行空格字符——这俩完全不是一回事,所以才会匹配失败。下面我给你几种主流编程语言的正确检查方法:
JavaScript
直接用Unicode转义序列\u00A0就能精准匹配,两种简单方式:
const subject = "Hey 3"; // 这里的空格是U+00A0 // 方式1:用正则测试 const hasNbsp = /\u00A0/.test(subject); // 方式2:用includes方法直接检查 const hasNbsp2 = subject.includes('\u00A0'); console.log(hasNbsp); // 输出 true
Python
Python里直接用'\u00A0'这个字符做判断就行:
subject = "Hey 3" # 空格为U+00A0 # 方式1:用in运算符快速判断 has_nbsp = '\u00A0' in subject # 方式2:正则匹配(适合更复杂的场景) import re has_nbsp_re = bool(re.search(r'\u00A0', subject)) print(has_nbsp) # 输出 True
Java
Java中同样使用Unicode转义\u00A0来匹配:
String subject = "Hey 3"; // 空格为U+00A0 // 方式1:contains方法直接检查 boolean hasNbsp = subject.contains("\u00A0"); // 方式2:正则匹配 boolean hasNbspRegex = subject.matches(".*\\u00A0.*"); System.out.println(hasNbsp); // 输出 true
额外小技巧
如果你的场景需要覆盖其他类似的特殊空白字符(比如全角空格U+3000、窄非换行空格U+202F等),可以用正则的字符集来统一匹配:
// JavaScript示例:匹配多种特殊空白 const hasSpecialSpace = /[\u00A0\u202F\u3000\u1680\u2000-\u200A\u205F\u2060]/.test(subject);
内容的提问来源于stack exchange,提问作者trop yes
相关产品推荐
相关产品推荐

