首页 > 解决方案 > 确保文本的双引号被关闭

问题描述

如何确保以双引号开头的用户输入文本也以双引号结尾?或者它在文本中有一个双引号确保它像这样关闭:

  1. test"a错误的
  2. test"a"正确的
  3. "test'错误的
  4. "test"正确的


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

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

标签: javascriptangular

解决方案


你可以这样做:

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())


推荐阅读