jquery match() 变量插值 - 复杂的正则表达式

2024-01-12

我已经看过了this https://stackoverflow.com/questions/1695633?sort=newest#sort-top,这在一定程度上是有帮助的。

问题就在这里。我有一个通过用户单击传播到元素中的用户列表;像这样的东西:

<div id="box">
    joe-user
    page-joe-user
    someone-else
    page-someone-else
</div>

单击时,我想确保用户尚未被单击到 div 中。所以,我正在做类似的事情:

if ( ! $('#box').html().match(rcpt) )
{
   update_div();
}
else
{
   alert(rcpt+' already exists.');
}

然而,由于 javascript 缺乏对正则表达式的插值,导致我的警报在以下用例中触发:page-joe-user被选中,然后用户选择joe-user,这显然不完全相同。

在 Perl 中我会做类似的事情:

if ( $rcpt =~ /^\Qrcpt\E/ )
{
    # code
}

我想做的就是将 match() 更改为:

if ( ! $('#box').html().match(/^rcpt/) )
{
    # code
}

if ( ! $('#box').html().match(rcpt) )看起来有点有希望,但也失败了。使用new RegExp()在函数 IE 中使用复杂 RE 语法的串联也不起作用$('#box').html().match(new RegExp('^'+rcpt))。我也尝试过$('#box').html().match('/^'+rcpt'/')。我只能想象我错过了一些东西。我对 javascript 还很陌生。

我似乎无法在此网站上找到真正解决此类用例的任何内容。

TIA


The match函数仅适用于字符串,不适用于 jQuery 对象。

最好的方法是将每个用户名放入单独的 HTML 标记中。

例如:

<ul id="users">
    <li>joe-user</li>
    <li>page-joe-user</li>
    <li>someone-else</li>
    <li>page-someone-else</li>
</ul>

然后您可以编写以下内容:

if($('#users li').is(function () { return $(this).text() === rcpt; }))

如果你想按照自己的方式做,你应该打电话text()获取元素内的字符串。 ($('#box').text().match(...))


EDIT:使用 HTML 执行此操作的最佳方法是拆分字符串。

例如:

var userExists = false;
var users = $('#box').text().split(/\r?\n/);

for(var i = 0; i < users.length; i++) {   //IE doesn't have indexOf
    if (users[i] == rcpt) {
        userExists = true;
        break;
    }
}
if (userExists) {
    //Do something
}

这样做的额外好处是不易受到正则表达式注入的影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery match() 变量插值 - 复杂的正则表达式 的相关文章

随机推荐

  • 如何防止 Vim 在分割窗口时滚动?

    当我水平分割窗口时 我想阻止 Vim 滚动 如果这是正确的词 假设我在 Vim 中编辑一个 10 行文件 我在缓冲区上有一个窗口 窗口高 40 行 有足够的空间容纳两个窗口 一个在另一个之上 两个窗口都显示整个缓冲区 比方说scrollof
  • $parse、$interpolate 和 $compile 服务之间有什么区别?

    有什么区别 parse interpolate and compile服务 对我来说 他们都做同样的事情 获取模板并将其编译为模板函数 这些都是有助于 AngularJS 视图渲染的服务示例 尽管 parse and interpolate
  • Java 计算一年中的天数或两个日期之间的天数

    任何本机 Java 类中是否有一种方法可以计算特定年份中过去 将有多少天 就像 这是一个闰年 https en wikipedia org wiki Leap year 366天 还是平年 365天 还是需要我自己写 我正在计算两个日期之间
  • git - 只获取文件,不获取历史记录

    当我跑步时git pull or git fetch 我显然检索了历史记录和文件 对于大型项目来说 这需要花费很多时间 我想知道如何加快这个过程 对于某些项目 我只对源代码感兴趣 而不是对历史感兴趣 有没有办法告诉 git 我只想获取文件的
  • 在寄存器前加一个星号是什么意思?

    我正在研究c 如何通过汇编语言调用正确的成员函数 我附带的简单程序如下 class A public virtual void show class B public A public void show
  • 如何从外部进程打开 Visual Studio 中的现有工作项?

    我有一个控制台应用程序 它使用 TFS API 创建工作项 我希望应用程序在打开创建的工作项的情况下启动 Visual Studio 我试过 Process Start vstfs WorkItemTracking WorkItem 123
  • resignFirstResponder 不起作用?

    我尝试在 iPad 上隐藏键盘 但我不知道为什么 resignFirstResponder 不起作用 但 popToRoot 工作得很好 BOOL textFieldShouldReturn UITextField textField NS
  • 如何在grep结果中保留换行符?

    我想将 grep 结果分配给一个变量以供进一步使用 lines cat abc txt grep hello 但当我这样做时 似乎换行符在结果中被删除 echo lines 只打印一行 如何保留换行符 因此当我回显 lines 时 它会生成
  • Python 初学者 - 没有名为“mpi4py”的模块

    我是一名学生 第一次使用Python 目前我在虚拟机上使用 Xubuntu 19 10 我检查了 python 和 mpi4py 安装 我的 并行编程 教授给了我这个简单的 python 代码 from mpi4py import MPI
  • 渲染 JList 时更改光标

    我已经实现了我想要做的事情 但我忍不住认为有一种更有效的方法 请允许我来说明 简而言之 我要问的问题是是否有一种方法可以确定组件何时完成其初始渲染 我有一个 JList 它连接到 DefaultListModel 并由扩展了 Default
  • 主要 PHP/MySQL 登录项目,带有会话变量

    好吧 这两天我一直在网上搜寻并尽力搭建一个相当复杂的登录系统 我已经让它的核心工作起来了 用户可以注册并登录 我对简单的 php 和 mysql 并不陌生 但是当涉及到像这样的深入代码时 我迷失了 基本上我想要的是让用户输入他们的登录名 然
  • 如何完成这个python函数保存在同一个文件夹中?

    我正在尝试编写我的第一个真正的 python 函数 它可以做一些真正的事情 我想要完成的是搜索给定的文件夹 然后打开所有图像并将它们合并在一起 以便它们制作幻灯片图像 想象一下 5 个图像堆叠在一张图像中 我现在有了这段代码 应该没问题 但
  • 包含首字母缩略词的类的命名约定

    如果我用 OOP 语言命名一个新类 这是一个更好的约定 XMLWriter 最常见的 XMLwriter 更容易区分 XmlWriter 不再是缩写词 XML Writer 去掉了驼峰式的点 是的 很迂腐 但我很好奇谁使用什么以及为什么使用
  • 使用 python 脚本从 hdfs (hadoop) 目录获取文件列表

    如何使用python脚本从hdfs hadoop 目录中获取文件列表 我尝试过以下行 dir sc textFile hdfs 127 0 0 1 1900 directory collect 该目录有文件列表 file1 file2 fi
  • Node.js 和 CPU 密集型请求

    我已经开始修补 Node js HTTP 服务器 并且非常喜欢编写服务器端 Javascript 但有些事情阻止我开始在我的 Web 应用程序中使用 Node js 我了解整个异步 I O 概念 但我有点担心程序代码非常占用 CPU 资源的
  • 无法使用 OTG 端口连接 google Coral

    当我使用串行端口运行 google Coral 时 我可以运行演示应用程序 但是当我尝试运行时 谷歌珊瑚使用数据端口 C型电缆 我无法连接开发板 rahul ubuntu mdt shell 正在等待设备 连接到 Wishful yarn
  • JMeter 与远程服务器

    我正在尝试以分布式模式设置 JMeter 我有一个在 ec2 实例上运行的服务器 我希望主服务器在我的本地计算机上运行 我不得不跳过一些希望让 RMI 在服务器上正常工作 但通过将 java rmi server hostname 设置为
  • 使用 JS 将链接插入到选定的文本中(当用户专注于输入 URL 时丢失 window.getSelection() 值)

    我正在尝试将链接插入到选定的文本中 这在前端编辑器中很常见 我可以添加一个指向用户文本选择的链接 如下所示 var sel window getSelection var e document createElement a e inner
  • 使用 sed 删除匹配之前的所有行

    我正在使用 sed 来过滤文件列表 我有一个排序的文件夹列表 我想获取特定文件夹之后的所有行 为了完成这项任务 我使用了所描述的解决方案here https stackoverflow com a 5935779 518204它适用于我尝试
  • jquery match() 变量插值 - 复杂的正则表达式

    我已经看过了this https stackoverflow com questions 1695633 sort newest sort top 这在一定程度上是有帮助的 问题就在这里 我有一个通过用户单击传播到元素中的用户列表 像这样的