JavaScript中matches和match方法

matches方法用于检查DOM元素是否匹配特定的CSS选择器。在事件委托中尤其有用,例如在给定的HTML和JavaScript代码示例中,当点击事件触发且目标元素匹配'a.btn'选择器时,会阻止默认行为并打印消息。match方法在字符串中查找匹配项,返回匹配的字符串。本文介绍了matches和match方法的区别,并展示了它们在实际应用中的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

matches

主要是用来判断当前DOW节点是否能完全匹配对应的CSS选择器,如果匹配成功,返回true,反之则返回false

语法如下:

element.mathces(seletor);

这个方法在我们做事件委托时就显得非常有用,示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
 
    <div id="wrap">
        <a class="btn" href="http://www.baidu.com">点击连接</a>
        <span class="btn">不可点击按钮</span>
    </div>
 
<script>
    document.querySelector('#wrap').addEventListener('click', function (e) {
        if (e.target.matches('a.btn')) {
            e.preventDefault();
           console.log('a.btn');   
        }
    }, false);
</script>
</body>
</html>

match

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置

var str="Hello world!"
console.log(str.match("world"))

结果:

后记

本文个人学习总结,内容均来自网络,仅供学习。

### JavaScript 中 `match` 方法的用法 #### 示例代码 以下是使用 `match` 方法的一个简单示例: ```javascript const text = "Hello world! Welcome to the programming world."; const pattern = /world/g; const matches = text.match(pattern); console.log(matches); // 输出: ["world", "world"] ``` --- #### 语法结构 `match` 方法的基本语法如下: ```javascript string.match(regexp); ``` - **参数说明** - `regexp`: 可选。表示一个正则表达式对象。如果没有指定此参数,则会返回 `null`。 - **返回值** - 如果未找到匹配项,返回 `null`。 - 如果找到了匹配项,并且正则表达式的标志为 `g`(全局模式),那么返回的是一个数组,其中包含了所有的匹配子串[^2]。 - 如果没有设置 `g` 标志,则返回的第一个匹配项的相关信息,包括捕获组的内容。 --- #### 使用场景与解释 1. **基本匹配** 当不带任何修饰符时,`match` 返回第一个匹配的结果及其分组信息。 ```javascript const str = "The price is $100 and another item costs $200"; const result = str.match(/\$(\d+)/); console.log(result); // 输出: ["$100", "100"] ``` 这里 `$100` 是完整的匹配结果,而 `"100"` 则是从括号中提取出来的捕获组内容[^5]。 2. **全局匹配 (Global Matching)** 设置 `g` 标志可以查找整个字符串中的所有匹配项。 ```javascript const sentence = "Please contact us at support@example.com or sales@example.com"; const emailPattern = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g; const emails = sentence.match(emailPattern); console.log(emails); // 输出: ["support@example.com", "sales@example.com"] ``` 上述代码展示了如何利用正则表达式从一段文字中提取多个电子邮件地址[^4]。 3. **忽略大小写 (Case Insensitivity)** 添加 `i` 标志可以让匹配过程忽略字母的大小写差异。 ```javascript const inputText = "JavaScript is fun. javascript can be tricky!"; const jsRegex = /javaScript/ig; const occurrences = inputText.match(jsRegex); console.log(occurrences); // 输出: ["JavaScript", "javascript"] ``` 4. **多条件组合** 结合多种正则特性能够更灵活地处理复杂需求。 ```javascript let sampleData = "User ID: u123456789, Product Code: pXYZabcde"; let extractInfo = sampleData.match(/([a-zA-Z]\d{9})|([a-z][A-Z]{3}[a-z]+)/gi); console.log(extractInfo); // 输出: ["u123456789", "pXYZabcde"] ``` --- #### 特殊情况分析 当调用 `match()` 而未传入有效正则表达式作为参数时,行为取决于具体环境设定。通常情况下,这种错误会导致运行失败或抛出异常提示用户修正输入数据形式[^1]。 另外需要注意的一点是,尽管某些时候可以用作简单的存在性测试工具替代 `search()` 函数功能,但由于其设计初衷在于获取详细匹配成果而非单纯判断真假状态,因此建议按照实际用途选取最合适的 API 实现目标逻辑。 --- ### 总结 综上所述,`match` 方法提供了强大的能力去解析并操作基于特定模式定义下的文本片段集合。无论是单独寻找单次出现还是遍历全部符合条件条目均能胜任良好表现角色位置之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月落乌江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值