我需要帮助来获取字符串的前n个字符(直到数字字符开始)

时间:2019-07-19 18:49:21

标签: javascript regex

我正在使用一个字符串,在该字符串中,我需要提取前n个字符,直到数字开始。最好的方法是什么,因为有时字符串以数字开头:7EUSA8889er898我需要提取7EUSA但是其他字符串示例是SWFX74849948,我需要提取来自该字符串的SWFX

不知道如何使用正则表达式执行此操作,因为我有限的知识在这一点上阻止了我:

^(\w{4})只是让我获得前四个字符,但我实际上并没有停止点,因为有时字符串可能是somelongstring292894830982,这需要我获得somelongstring

5 个答案:

答案 0 :(得分:5)

使用\w将匹配一个包含字符,数字和下划线的单词字符。

您可以从字符串[0-9]?开始匹配一个可选数字^,然后匹配1+次A-Za-z

^[0-9]?[A-Za-z]+

Regex demo

const regex = /^[0-9]?[A-Za-z]+/;
[
  "7EUSA8889er898",
  "somelongstring292894830982",
  "SWFX74849948"
].forEach(s => console.log(s.match(regex)[0]));

答案 1 :(得分:1)

由于很难告诉您要匹配的内容,因此我会使用常规的正则表达式

^\d?\D+(?=\d)

答案 2 :(得分:0)

可以使用此正则表达式代码:

(^\d+?[a-zA-Z]+)|(^\d+|[a-zA-Z]+)

我尝试过exmaple,并且效果很好:

1- somelongstring292894830982-> somelongstring

2- 7sdfsdf5456-> 7sdfsdf

3- 875werwer54556-> 875werwer

答案 3 :(得分:0)

如果您要创建其中RegExp由n参数设置参数的函数,则为

  function getStr(str,n) {
    var pattern = "\\d?\\w{0,"+n+"}";
    var reg = new RegExp(pattern);
    var result = reg.exec(str);
    if(result[0]) return result[0].substr(0,n);
  }

答案 4 :(得分:0)

有解决方法,但这是另一种方法。

var string1 = '7EUSA8889er898';
var string2 = 'SWFX74849948';

var Extract = function (args) {
    var C = args.split(''); // Split string in array
    var NI = []; // Store indexes of all numbers
    // Loop through list -> if char is a number add its index
    C.map(function (I) { return /^\d+$/.test(I) === true ? NI.push(C.indexOf(I)) : ''; });
    // Get the items between the first and second occurence of a number
    return C.slice(NI[0] === 0 ? NI[0] + 1 : 0, NI[1]).join('');
};
console.log(Extract(string1));
console.log(Extract(string2));

输出

EUSA
SWFX7