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