【发布时间】:2018-01-16 05:02:24
【问题描述】:
假设我们有这些字符串:
1. "a;b;c;d;e"
2. "1;2;3;4;5"
3. "!@#$%^&*()_+;!@#$%^&*()_+;"
有没有办法在调用.split(';') 时只在; 在字母数字字符之间时拆分?
预期结果:
1. a, b, c, d, e
2. 1, 2, 3, 4, 5
3. !@#$%^&*()_+;!@#$%^&*()_+; // kept as is
这是我目前所拥有的,但在我“期望”它工作的地方并没有完全正确地分开。
.split(/[A-Za-z0-9];[A-Za-z0-9]/g);
当前结果:
1. (3) ["", ";", ";e"] // no
2. (3) ["", ";", ";5"] // no
3. ["!@#$%^&*()_+;!@#$%^&*()_+;"] // yes
只是为了更新。这不是字符串数组。以上字符串只是示例。还要澄清我期望发生的事情。
分号前面必须有数字或字母。
Yes - both characters beside the ; must be a letter or a number
a;b > a, b
1;2 > 1, 2
c;3 > c, 3
4;d > 4, d
5;6;a; > 5, 6, a
No - when either of the characters beside the ; is not a letter or a number
!;@
12$;525
aa;!$242
bbbbbb;
另一个更新anubhava 的answer 就像一个魅力,但我在这个特定的字符串中遇到了一些问题。
TestTEST!@#$%^&*()_+{}|\":?><,./;'[]\\=-this is a long text.test 123455899949949494949499499;TestTEST!@#$%^&*()_+{}|\":?><,./;'[]\\=-this is a long text.test 123455899949949494949499499
他的回答是/([A-Za-z0-9]+);(?=[A-Za-z0-9])/。但是对上面的字符串使用上述正则表达式会导致
(3)
"TestTEST!@#$%^&*()_+{}|":?><,./;'[]\=-this is a long text.test ",
"123455899949949494949499499",
"TestTEST!@#$%^&*()_+{}|":?><,./;'[]\=-this is a long text.test 123455899949949494949499499"
当预期是
"TestTEST!@#$%^&*()_+{}|\":?><,./;'[]\\=-this is a long text.test 123455899949949494949499499"
"TestTEST!@#$%^&*()_+{}|\":?><,./;'[]\\=-this is a long text.test 123455899949949494949499499"
【问题讨论】:
-
alphanumeric字符串是哪一个 -
alphanumeric表示数字或字母,对吗?所以项目 1 和 2 -
alphanumeric根据谷歌是consisting of or using both letters and numerals.,但我在这里看不到任何这样的字符串,它有字母或数字 -
只需使用 for 循环,我现在正在写答案。实际上,不,我不是,hafiz 的答案是完美的,使用正则表达式
-
我从小就将一个字符称为
alphanumeric,无论是字母还是数字。喜欢这个guy。我希望我的例子很清楚。
标签: javascript regex