我有这个字符串:
<input inputmode="numeric" pattern="[0-9]*" type="text" name="something">
我想得到:
Item 1Item 2Item 3Item 4
我试图这样做:
["Item 1", "Item 2", "Item 3", "Item 4"]
但这不起作用,知道如何获得预期的结果吗?
编辑:
max的字符串可能像这样:
var string = 'Item 1Item 2Item 3Item 4'
var regex = string.split(/(\d)/)
regex.splice(-1, 1)
regex[regex.length - 2] += regex[regex.length - 1];
regex.splice(-1, 1)
console.log(regex);
答案 0 :(得分:9)
注意:答案适用于原始情况-更新之前
使用String.match()
查找以数字序列(regex101)结尾的非数字序列:
spring:
application:
your-application-name
[other global application settings]
...
---
spring:
profiles: dev
[other settings which apply only to dev environment]
---
spring:
profiles: prod
[all production settings (will overwrite other values if present]
答案 1 :(得分:4)
当您在正则表达式中有捕获组(signature_id exceptionmessage count
b1det422 Cannot read property 'get' of undefined Stack 31,321
330ope77 Unauthorized access response for many users 1,207
53m6m466 Reference cannot be set to an empty.object.3 311
)并传递给(...)
时,捕获的文本将作为结果的一部分返回。这就是为什么在.split
之间有"1"
,"2"
等的原因。
除了@Ori Dori's solution的某些变体之外,您还可以使用lookahead assertion "Item "
(这是一种非捕获构造)来解决此问题。
(?=...)
这将通过在出现文本var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = string.split(/(?=Item)/);
console.log(arr);
之前立即将字符串分开而起作用。
对于完全不使用正则表达式的强力解决方案:
"Item"
答案 2 :(得分:2)
如果您的elements
始终以单词Item
开头,则可以使用split()做类似的事情:
const str = 'Item 1Item 2Item 3Item 4Item N-2Item N-1Item N'
var arr = str.split("I").slice(1).map(x => "I" + x);
console.log(arr);
更好,或者您可以使用match()
使用单个正则表达式来实现
const str = 'Item 1Item 2Item 3Item 4Item 999Item N-2Item N-1Item N'
var arr = str.match(/Item\s[1-9|N|-]+/g);
console.log(arr);
答案 3 :(得分:0)
要获得预期结果,请在下面的选项中使用replace,split和slice
var str = "Item 1Item 2Item 3Item 4Item NItem N-1"
let arr = str.replace(/\I/g, ' I').split(' ').slice(1);
console.log(arr)