构建期望第一个字符大写的Javascript正则表达式,其余部分不区分大小写

耶利哥

我有很多工作技能,就像您可能在LinkedIn上看到的那样(“核物理”,“ Python”,“重型机械”等)。我也有一大段文字:职位描述。我正在尝试遍历列表,并确定文本块中存在哪些技能。这是我当前的代码:

  // escape possible special characters in a string
  // https://stackoverflow.com/questions/4371565/
  const escapeRegExp = (s) => {
    return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
  }

  let skills_in_job = {}

  skills.forEach(skill => {
    // Creating a regexp to search for all instances of <skill>
    // \b means it is a standalone word (to prevent 'React' being in 'Reactive')
    // 'g' means it will search globally (not just the first it finds)
    // 'i' means it will be case insensitive
    // Add word boundaries to make sure it is not a substring of a word
    const rx = RegExp("\\b" + escapeRegExp(skill) + "\\b", 'gi')
    const count = (job.match(rx) || []).length
    if (count) skills_in_job[skill] = count
  })

但是,该i标志给了我一些问题:

  • 它无法避免误报(“对框架进行响应”与“对...进行响应”)
  • 一个作业可以具有同一事物的多个大写字母(Reactjs / ReactJS,样式化组件/样式化组件)

理想情况下,我的正则表达式表达式只应关心首字母的大写。我不确定如何以编程方式执行此操作。

维克多·史翠比维

JavaScript正则表达式不支持内联修饰符((?i)),也不支持修饰符组((?i:...))。

您可以按照Barmar建议的路径,从每个非首字母创建一个字符类,然后构建一个区分大小写的正则表达式:

skill = skill.replace(/\B./g, (x) => `[${x.toLowerCase()}${x.toUpperCase()}]`);
const rx = RegExp("\\b" + escapeRegExp(skill) + "\\b", 'g');

或者,您可以简单地过滤掉以第一个字母的不同大小写开头的匹配项

const rx = RegExp("\\b" + escapeRegExp(skill) + "\\b", 'gi')
const matches = (job.match(rx) || []).filter(x => x.charAt(0) == skill.charAt(0));
const count = (matches || []).length;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式表达大写的第一个字符

来自分类Dev

正则表达式表达大写的第一个字符

来自分类Dev

检查一个字符串是否包含另一个字符串的全部或3个连续字符?正则表达式python不区分大小写

来自分类Dev

正则表达式不捕获第一个字符

来自分类Dev

匹配正则表达式中的第一个字符?

来自分类Dev

非法第一个字符的正则表达式

来自分类Dev

使用正则表达式获取第一个字符

来自分类Dev

大写仅每个单词的第一个字母,其余部分小写

来自分类Dev

Notepad ++中的正则表达式:用正则表达式部分的第一个字符替换

来自分类Dev

Notepad ++中的正则表达式:用正则表达式部分的第一个字符替换

来自分类Dev

Javascript正则表达式忽略匹配中的第一个字符

来自分类Dev

正则表达式忽略第一个字符,如果它是一个$

来自分类Dev

正则表达式验证仅具有小写字母的字符串,第一个字符必须为字母

来自分类Dev

正则表达式以验证仅具有小写字母的字符串,第一个字符必须为字母

来自分类Dev

JS中的正则表达式以查找每个单词的第一个字符并转换为大写

来自分类Dev

每个第一个字符和任何大写字母的正则表达式

来自分类Dev

两个字符串之间的 JavaScript 正则表达式而不捕获第一个字符串

来自分类Dev

如何把 xpages 正则表达式(第一个字符和最后一个字符)不能是特殊字符

来自分类Dev

使用正则表达式使第一个字符小写和空格下划线

来自分类Dev

正则表达式匹配不包括第一个字符的字符串

来自分类Dev

正则表达式-回显字符串的第一个字符

来自分类Dev

R:从第一个字符到字符串末尾的正则表达式

来自分类Dev

jQuery select2区分大小写的第一个字符

来自分类Dev

正则表达式仅匹配第一个字符

来自分类Dev

忽略正则表达式匹配中的第一个字符

来自分类Dev

正则表达式将邮递区号和第一个字符

来自分类Dev

正则表达式不允许数字作为第一个字符

来自分类Dev

正则表达式提取单词的第一个字符(Ultisnips)

来自分类Dev

正则表达式删除与第一个字符串匹配的行?

Related 相关文章

  1. 1

    正则表达式表达大写的第一个字符

  2. 2

    正则表达式表达大写的第一个字符

  3. 3

    检查一个字符串是否包含另一个字符串的全部或3个连续字符?正则表达式python不区分大小写

  4. 4

    正则表达式不捕获第一个字符

  5. 5

    匹配正则表达式中的第一个字符?

  6. 6

    非法第一个字符的正则表达式

  7. 7

    使用正则表达式获取第一个字符

  8. 8

    大写仅每个单词的第一个字母,其余部分小写

  9. 9

    Notepad ++中的正则表达式:用正则表达式部分的第一个字符替换

  10. 10

    Notepad ++中的正则表达式:用正则表达式部分的第一个字符替换

  11. 11

    Javascript正则表达式忽略匹配中的第一个字符

  12. 12

    正则表达式忽略第一个字符,如果它是一个$

  13. 13

    正则表达式验证仅具有小写字母的字符串,第一个字符必须为字母

  14. 14

    正则表达式以验证仅具有小写字母的字符串,第一个字符必须为字母

  15. 15

    JS中的正则表达式以查找每个单词的第一个字符并转换为大写

  16. 16

    每个第一个字符和任何大写字母的正则表达式

  17. 17

    两个字符串之间的 JavaScript 正则表达式而不捕获第一个字符串

  18. 18

    如何把 xpages 正则表达式(第一个字符和最后一个字符)不能是特殊字符

  19. 19

    使用正则表达式使第一个字符小写和空格下划线

  20. 20

    正则表达式匹配不包括第一个字符的字符串

  21. 21

    正则表达式-回显字符串的第一个字符

  22. 22

    R:从第一个字符到字符串末尾的正则表达式

  23. 23

    jQuery select2区分大小写的第一个字符

  24. 24

    正则表达式仅匹配第一个字符

  25. 25

    忽略正则表达式匹配中的第一个字符

  26. 26

    正则表达式将邮递区号和第一个字符

  27. 27

    正则表达式不允许数字作为第一个字符

  28. 28

    正则表达式提取单词的第一个字符(Ultisnips)

  29. 29

    正则表达式删除与第一个字符串匹配的行?

热门标签

归档