正则表达式

2016-04-01 14:18:56 +08:00
 Kitayama

在 FCC 网看到一道 JS 题目,代码如下:

function palindrome(str) {

var strippedStr = str.toLowerCase().replace(/\W|_/g, ''); var reversedStr = strippedStr.split('').reverse().join('');

if(reversedStr === strippedStr) { return true; } else { return false; } }

palindrome("A man, a plan, a canal. Panama");

其中的 replace 中的(/,|,_ ) 分别代表什么意思呢?

2216 次点击
所在节点    正则表达式
10 条回复
gimp
2016-04-01 14:23:42 +08:00
两个 / / 是范围, g 是全局的意思,\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]” | 是或者的意思。逗号后边的''是两个单引号,我猜是看成一个双引号有点迷茫?
whahuzhihao
2016-04-01 14:24:19 +08:00
/ 是定界符 表示中间这段是正则的内容
| 是或
_ 就是下划线咯
Kitayama
2016-04-01 14:38:08 +08:00
@gimp 查了下正则表达式,知道\w ,就是不明白为什么要在\w 前加一个 /,后面跟一个|_ 。
整句话翻译一下:用‘’代替,全局匹配到的任何非单词字符吗?
请问一下 replace ,''中如果什么都不写,是和 split('')一样,将字符串中所有单词都变成独立的吗?原本 string='asdaf',变成‘ a','s','d','a','f' 这样吗
UnisandK
2016-04-01 14:47:11 +08:00
主体就是 \W|_ 呗,\W 匹配任意不是字母,数字,下划线,汉字的字符。后边加个“或下划线”,就是匹配任意不是字母,数字,汉字的字符了
Exin
2016-04-01 14:47:15 +08:00
@Kitayama 在\w 前加一个 '/'以及在后面加'/'是界定范围,后面的'/'之后的 g 是设定一种模式,将正则表达式内容放在两个'/'之间是 JS 的特定语法。
另外这应该是用''替代任何单词字符(0-9|a-z|A-Z|_)吧?

最后那个问题你写一段代码跑一跑不就知道了?
kamal
2016-04-01 15:06:15 +08:00
看,没有语法高亮多不方便

Kitayama
2016-04-01 15:38:49 +08:00
@Exin 谢谢!
Kitayama
2016-04-01 15:39:06 +08:00
@kamal 多谢!
Exin
2016-04-01 15:41:16 +08:00
@kamal 请问这是什么工具 /站点?
kamal
2016-04-01 16:19:57 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/267897

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX