javascript - 如何通过 Javascript 自动添加双引号将字符串括起来?

标签 javascript regex

我想自动用双引号将搜索词括起来

例如

<input type="text" name="keywords" value="" id="search" size="17" />
<input type="submit" value="Go">

访问者试图搜索一个短语 = long enough(它包含 2 个单词,中间有一个空格)

我需要将字符串 long enough 作为 "long enough" 传递给服务器端 (PHP)

我不想告诉访问者使用双引号来搜索短语,对于访问者来说搜索应该很容易。

目前,当访问者输入包含一个词 long 的搜索词时,搜索结果会显示正确的文章。

但是当访问者使用短语 long enough 或任何其他短语时,至少使用 2 个单词,搜索结果不准确,因为搜索需要 long enough作为 2 个单独的搜索词。

为了获得准确的搜索结果,ExpressionEngine CMS 希望访问者输入 "long enough" [任何用双引号引起来的短语]

这是我想自动做的,当访问者搜索一个词时,它应该留下关键字并让它通过而不带任何引号,但是当访问者使用 2 个或更多词时,搜索表单应该通过这些短语双引号


@Jonathon Wisnoski 提供的代码可以正常工作,但有一个缺点

 <script type="text/javascript">
        function quoteWords() {
            var search = document.getElementById("search_box");
            search.value = search.value.replace(/^\s*|\s*$/g, ""); //trim string of ending and beginning whitespace
            if(search.value.indexOf(" ") != -1){ //if more then one word
                search.value = search.value.replace(/^"*|"*$/g, "\"");
            }
        }
  </script>

问题: 手动添加双引号并按提交时中断,最后输入一个额外的双引号。正则表达式代码应该查看双引号是否存在,它不应该添加任何东西。

所以它使 “足够长”“足够长””

任何人都可以检查正则表达式代码,看看如何解决这个问题。

最佳答案

您实际上应该按原样 服务器端处理字符串。任何使用 JavaScript 预处理的东西都不能依赖。

但是,如果您确实想这样做,可以使用一个名为 quote() 的非标准 String 方法。 .

但是,因为它不是标准的,所以我会使用...

str = '"' + str.replace(/^"*|"*$/, '') + '"';

这会去除前导和尾随 ",然后将字符串再次包装在 " 中。

关于javascript - 如何通过 Javascript 自动添加双引号将字符串括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146860/

相关文章:

javascript - 使用JQuery设置文本框的值

javascript - 缩短长 if/else 语句的最简单方法是什么?

javascript - 尝试使用 Bookshelf.js 清理 Node.js 中的嵌套 Promise 链

javascript - Angular : share asynchronous service data between controllers

c# - 正则表达式提取字符串

javascript - regex.test() 函数没有给出正确的结果

Java Applet/Javascript - 通过网络打印 pdf 时如何操作打印设置?

asp.net-mvc - 如何在正则表达式中忽略大小写?

python - 将 url 与 python 中的自定义模式进行比较

regex - R:gsub 和捕获