确保文本的双引号已关闭

时间:2019-11-06 18:09:29

标签: javascript angular

如何确定用户输入的以双引号开头的文本也以双引号结尾?或者在文本中用双引号引起来,请确保将其关闭,例如:

  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 = "";
    }
}

2 个答案:

答案 0 :(得分:1)

有一个简单的方法,您可以像这样检查最后一个字符:

filterDescriptor.value.toString().charAt(filterDescriptor.value.toString().length-1);

它将为您提供字符串中的最后一个字符,因此您可以对此进行验证。

为验证该字段为空不是很好,最好向用户显示错误或警告。

答案 1 :(得分:1)

您可以这样:

.r-tificial-text {
  grid-column-start: 2;
  grid-column-end: 10;
  background-color: #fff;
}

这些也是opton:

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

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

更新

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

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

或使用RegEx:

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