其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

关于正则表达式去空格的

GG网络技术分享 2025-03-18 16:15 2


问题描述:

一大段话,要求识别 回车,逗号(全角半角均可),顿号,空格(全角半角、Tab等均可)等符号作为不同内容的间隔,变成若干小句子
然后我写的
图片说明
1空格2 空格能消掉。 空格空格1 空格消不掉
---------------------------已懂 我加了个条件 数组首尾元素是“”则弹出-----------

然后我去翻高程书128页

 var color = \"red ,blue,green,yellow”

var col = color.split(/[^\\,]+/)----->[\"\" , \",\" , \",\" , \",\" \"\"]

\\,怎么理解 逗号还能转义?

网友观点:

转义逗号,由于逗号不是正则关键字,加\\和不加\\都可以,不影响,但是如果是{}[]这种字符就需要注意机上,要不报错

var col = color.split(/[\\,]+/)
加上^表示非逗号。因为split是作为分割的字符本身要去掉,所以不用非。

梳理一下正则表达式

正则表达式

基本的匹配对象


  • [xyz]字符集,匹配任一包含(只要有就返回true)


  • [^xyz]否定字符集,匹配任何未包含(只要有就返回true)


  • \\w 匹配字母、数字、下划线


  • \\W 匹配不是字母、数字、下划线


  • \\s 匹配任意空白符(空格)


  • \\S 匹配不是空白符的字符


  • \\d 匹配数字


  • \\D 匹配非数字的字符


  • \\b 匹配单词开始/结束位置


  • \\B 匹配不是单词开头/结束位置


  • ^ 匹配字符串开头


  • $ 匹配字符串结尾


  • . 匹配任一字符(除了换行符)


RegExp

属性:

匹配规则字段

  • source

反映标志位

  • ignoreCase
  • global
  • multiline

方法:

  • test()
  • exec()

量词

  • * 重复0 / m
  • + 重复1 / m
  • ? 重复0 / 1
  • {n} 重复n次
  • {n, m} 重复n - m次

分组

捕获性分组

  • ()

引用

  • res[1]
  • RegExp.$1(1开始)

反向引用

  • <(div)><\\/\\1> \\1为div

非捕获性分组

  • (?:)

贪婪匹配和惰性匹配

贪婪匹配(greedy)

尽可能多的进行匹配

<span>xxx</span><span>yyy</span>
let reg = /<span>.*</span>/
最前面的匹配到最后面的

惰性匹配(no-greedy / lazy)

普通量词后加?

<span>xxx</span><span>yyy</span>
let reg = <span>.+?</span>
第一个span标签

正向前瞻和负向前瞻

正向前瞻(零宽断言)

用法1:匹配字段 / cwg (?= love little tail) /
用法2:匹配位置 / (?= love little tail) /

负向前瞻(负向零宽断言)

用法1:匹配字段 / cwg (?! love other gril) /
用法2: 匹配位置 / (?! love other gril) /

String中使用正则的方法

replace

作用:匹配替换
用法:str.replace(reg/str, 替换str/生成替换str的function)

match()

作用:返回一/多个匹配的值(类似于indexOf()但是返回的是值)
用法:str.match(reg/str)

split()

作用:”a b c d”按空格分的话,会有空格的选项
用法:str.split(reg/str)
上述解法:str.split(/\\s+/)

search()

作用:返回第一个匹配的起始位置
用法:str.search(reg)

标签:

提交需求或反馈

Demand feedback