Возможным решением будет использование JSON.parse()
, поскольку строка типа "hello"
также является допустимым объектом JSON, а строка типа "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));
});