javascript - 以引号开头但不以转义字符开头的字符串的正则表达式
问题描述
我必须找到一个以双引号开头和结尾的字符串,然后更改它的颜色。但是如果有转义字符(/)带引号,那么它不会被认为是字符串,颜色也不会改变。
例如:
- “你好”
- \“你好\”
第一个示例将被视为字符串,而第二个示例将不被视为字符串。
如何在javascript中编写一个正则表达式,它只返回一个以双引号开头和结尾但不应该有任何转义字符(/)的字符串
解决方案
一个可能的解决方案是使用JSON.parse()
,因为字符串 like"hello"
也是有效的 JSON 对象,而字符串 like"hello\"
不是。
function checkString(str){
try {
// let's try to parse the string as a JSON object
const parsed = JSON.parse(str);
// check if the result is a valid javascript string
return (parsed === String(parsed));
}
catch(error){
return false;
}
}
编辑:
如果你有一个对象数组,并且你需要找出哪个对象是一个有效的字符串,你可以这样做:
const strings = ['"valid string"', '"not valid string\\"'];
const validStrings = strings.filter((e) => {
return (e === String(e) && checkString(e));
});
推荐阅读
- curve-fitting - 使用 lmfit 拟合电容器的幅度(频率响应)
- flutter - GestureDetector 中的增量和主要增量有什么区别?
- ssh - X11 转发:`xclock` 有效,但 `cmake-gui` 无效
- html - 如何在以窗口为中心的 div 中启用具有非固定高度的滚动条?
- python - 浮士德与 Kafka-python 之间的区别
- azure - 如果 RBAC 权限允许 AD 组级别访问,如何限制用户访问数据湖中的文件夹的权限?
- java - Org.apache.hadoop.ipc.RemoteException 文件只能写入 1 minReplication 节点中的 0 个
- python - AIOHTTP 在调用 raise_for_status 时具有请求正文/内容/文本
- java - 无论指定什么颜色,NavigationBar 颜色在深色模式下都保持黑色
- swift - Swift 在除法上返回 0