Javascript不会将毛发空间解释为带有正则表达式的空间
Javascript doesn't interpret Hair space as a space with regex
我使用一个正则表达式作为splitfunction。
string.split(/'s/)
但 
(这是一个发空间)将不被识别。如何确保它(不实现regex表达式中的确切代码)
根据MDN,(在Firefox浏览器中)正则表达式中's
的定义如下:
[ 'f'n'r't'v'u00a0'u1680'u180e'u2000'u2001'u2002'u2003'u2004'u2005'u2006'u2007'u2008'u2009'u200a'u2028'u2029'u202f'u205f'u3000]
所以,如果你想在此之外的东西上分裂(例如HTML实体),那么你需要将其添加到你自己的正则表达式中。记住,string.split()
不是一个HTML函数,它是一个字符串函数,所以它不知道任何关于HTML的特殊信息。如果你想分割某些HTML标签或实体,你必须编写一个正则表达式,其中包括你想分割的东西。
你可以自己写代码,像这样:
string.split(/'s| /);
工作演示:http://jsfiddle.net/jfriend00/nAQ97/
如果你真正想做的是让你的HTML被浏览器解析并转换为文本(它将处理所有的实体和HTML标签),那么你可以这样做:
function getPlainText(str) {
var x = document.createElement("div");
x.innerHTML = str;
return (x.textContent || x.innerText);
}
然后,你可以像这样分割字符串:
getPlainText(str).split(/'s/);
工作演示:http://jsfiddle.net/jfriend00/KR2aa/
如果你想绝对确保这在旧的浏览器中工作,你要么必须在你关心的所有浏览器中测试上述功能之一,要么你必须在第一个选项中使用自定义正则表达式来处理你想要分割的所有实体,或者在第二个选项中搜索/替换所有你想要分割的unicode字符,并在进行分割之前将它们转换为常规空间。因为旧的浏览器在这里不是很一致,如果你想要与旧浏览器安全兼容,没有免费的午餐。
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- Javascript正则表达式空间检查
- 不能使用正则表达式将空格替换为零宽度空间
- 电子邮件的正则表达式允许空白空间、有效电子邮件地址和多个电子邮件地址
- 为了留出空间,应该对此正则表达式进行哪些修改
- 如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号
- 正则表达式词边界空间
- 用于精确命名空间的正则表达式
- 使用正则表达式删除项目符号后,在字符之间获得额外的空间
- 使用JavaScript在正则表达式中根据名称添加有限的空间
- Javascript不会将毛发空间解释为带有正则表达式的空间
- Javascript正则表达式符号,但不是空间