javascript - 确保文本的双引号已闭合

标签 javascript angular

如何确保用户输入的以双引号开头的文本也以双引号结尾?或者它在文本中有双引号,请确保它是闭合的,例如:

  1. 测试“a错误
  2. 测试“a”正确
  3. “测试”错误
  4. “测试”正确


我在按键事件上有一个委托(delegate)函数,因此如果用户以 " 开头,则在双引号关闭之前不应运行该函数,否则我传递值的 API抛出错误,因为引号未关闭,但他们也可以输入不带引号的文本。
我已经尝试过正则表达式,但是有更好的方法吗?

if (filterDescriptor.value && String(filterDescriptor.value).startsWith('"') ) {
    if(!String(filterDescriptor.value).match('"([^\\"]|\\")*"')) {
        filterDescriptor.value = "";
    }
}

最佳答案

你可以这样做:

if (filterDescriptor.value
    && String(filterDescriptor.value).startsWith('"')
    && String(filterDescriptor.value).slice(-1) === '"'
) {
    doSomething();
}

这些也是选项:

&& String(filterDescriptor.value).substr(-1) === '"'

&& String(filterDescriptor.value).charAt(String(filterDescriptor.value).length - 1) === '"'

更新

要检查字符串是否包含两个引号,您可以使用 JavaScript 函数尝试此方法:

String(filterDescriptor.value).includes('"',String(filterDescriptor.value).search('"') + 1)

或者使用正则表达式:

RegExp('.*".*".*').test(filterDescriptor.value.toString())

关于javascript - 确保文本的双引号已闭合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58736152/

相关文章:

javascript - 对 Node.js 中未使用需求的性能影响?

javascript - Highcharts Solid Gauge 只想显示 1 个数据标签

javascript - Chrome 上的 localStorage 在 getItem、setItem 之后重置

typescript - 使用数字管道抛出 InvalidPipeArgumentException(管道 '1' 的无效参数 'DecimalPipe')

angular - 为什么文件夹 dist (-prod) 中的 angular-cli webpack 有 gzip 文件也没有 gzip 文件

angular - 如何使 ionic modal 'dismiss' 方法起作用

javascript - 如何编译或检查 Node.js 应用程序中的语法错误

javascript - 如何使用 javascript 对输入元素进行排名

javascript - 使用按钮关闭下拉菜单 - Angular Material

c# - 使用 Postman 登录 Angular ASP.NET CORE 应用程序