J'ai une chaîne en javascript comme `# box2 'et je veux juste le' 2 '.
A essayé:
var thestring = $(this).attr('href');
var thenum = thestring.replace( /(^.+)(\w\d+\w)(.+$)/i,'$2');
alert(thenum);
Il renvoie toujours # box2 dans l'alerte, comment puis-je le faire fonctionner?
Il doit s'adapter à n'importe quel numéro de longueur attaché à la fin.
Pour cet exemple spécifique,
var thenum = thestring.replace( /^\D+/g, ''); // replace all leading non-digits with nothing
dans le cas général:
thenum = "foo3bar5".match(/\d+/)[0] // "3"
Depuis que cette réponse a gagné en popularité pour une raison quelconque, voici un bonus: le générateur de regex.
function getre(str, num) {
if(str === num) return 'Nice try';
var res = [/^\D+/g,/\D+$/g,/^\D+|\D+$/g,/\D+/g,/\D.*/g, /.*\D/g,/^\D+|\D.*$/g,/.*\D(?=\d)|\D+$/g];
for(var i = 0; i < res.length; i++)
if(str.replace(res[i], '') === num)
return 'num = str.replace(/' + res[i].source + '/g, "")';
return 'no idea';
};
function update() {
$ = function(x) { return document.getElementById(x) };
var re = getre($('str').value, $('num').value);
$('re').innerHTML = 'Numex speaks: <code>' + re + '</code>';
}
<p>Hi, I'm Numex, the Number Extractor Oracle.
<p>What is your string? <input id="str" value="42abc"></p>
<p>What number do you want to extract? <input id="num" value="42"></p>
<p><button onclick="update()">Insert Coin</button></p>
<p id="re"></p>
Vous devriez essayer ce qui suit:
var txt = "#div-name-1234-characteristic:561613213213";
var numb = txt.match(/\d/g);
numb = numb.join("");
alert (numb);
résultat
1234561613213213
Je pense que cette expression régulière servira votre but:
var num = txt.replace(/[^0-9]/g,'');
Où txt
est votre chaîne.
Il déchire essentiellement tout ce qui n’est pas un chiffre.
Je pense que vous pouvez réaliser la même chose en utilisant ceci aussi:
var num = txt.replace(/\D/g,'');
Utilisation de la fonction de correspondance.
var thenum = thestring.match(/\d+$/)[0];
alert(thenum);
Essayez ce qui suit: string.replace(/[^0-9]/g, '');
Ceci supprimera tous les caractères non numériques, ne laissant que des chiffres dans la chaîne.
function retnum(str) {
var num = str.replace(/[^0-9]/g, '');
return parseInt(num,10);
}
console.log('abca12bc45qw'.replace(/[^0-9]/g, ''));
console.log('#box2'.replace(/[^0-9]/g, ''));
J'ai essayé toutes les combinaisons citées ci-dessus avec ce code et l'a fait fonctionner, était le seul à travailler avec cette chaîne -> (12) 3456-7890
var str="(12) 3456-7890";
str.replace( /\D+/g, '');
Résultat:"1234567890"
Obs: Je sais qu’une telle chaîne ne sera pas attirante, mais peu importe, la solution est meilleure car elle est plus complète.
Et ceci est un extrait qui extrait les prix avec la devise et le formatage:
var price = "£1,739.12";
parseFloat(price.replace( /[^\d\.]*/g, '')); // 1739.12
vous pouvez utiliser la méthode parseInt
il convertira les premiers chiffres en un nombre
parseInt("-10px");
// will give you -10
Pour une chaîne telle que #box2
, cela devrait fonctionner:
var thenum = thestring.replace(/^.*(\d+).*$/i,'$1');
jsFiddle:
Avec Expressions régulières , comment obtenir des nombres à partir d'une chaîne, par exemple:
String myString = "my 2 first gifts were made by my 4 brothers";
myString = myString .replaceAll("\\D+","");
System.out.println("myString : " + myString);
le résultat de myString
est "24
"
vous pouvez voir un exemple de ce code courant ici: http://ideone.com/iOCf5G
Vous pouvez utiliser une expression régulière.
var txt="some text 2";
var numb = txt.match(/\d/g);
alert (numb);
Cela va alerter 2.
Vous pouvez utiliser Underscore String Library comme suit
var common="#box"
var href="#box1"
_(href).strRight(common)
le résultat sera: 1
Voir: https://github.com/epeli/underscore.string
DEMO:
http://jsfiddle.net/abdennour/Vyqtt/
Code HTML:
<p>
<a href="#box1" >img1</a>
<a href="#box2" >img2</a>
<a href="#box3" >img3</a>
<a href="#box4" >img4</a>
</p>
<div style="font-size:30px"></div>
Code JS:
var comm="#box"
$('a').click(function(){
$('div').html(_($(this).attr('href')).strRight(comm))})
si vous avez le suffixe suivant:
href="box1az"
Vous pouvez utiliser la prochaine démo:
http://jsfiddle.net/abdennour/Vyqtt/1/
function retrieveNumber(all,prefix,suffix){
var left=_(all).strRight(prefix);
return _(left).strLeft(suffix);
}
Utilisez ce code d’une ligne pour obtenir le premier nombre d’une chaîne sans erreur:
var myInt = parseInt(myString.replace(/^[^0-9]+/, ''), 10);
Voici un solt. qui vérifie l'absence de données
var someStr = 'abc'; // add 123 to string to see inverse
var thenum = someStr.match(/\d+/);
if (thenum != null )
{
console.log(thenum[0]);
}
else
{
console.log('no number');
}
s'il vous plaît vérifier ci-dessous javaScripts, là vous pouvez obtenir que le numéro
var txt = "abc1234char5678#!9";
var str = txt.match(/\d+/g, "")+'';
var s = str.split(',').join('');
alert(Number(s));
sortie: 1234567789
var elValue = "-12,erer3 4,-990.234sdsd";
var isNegetive = false;
if(elValue.indexOf("-")==0) isNegetive=true;
elValue = elValue.replace( /[^\d\.]*/g, '');
elValue = isNaN(Number(elValue)) ? 0 : Number(elValue);
if(isNegetive) elValue = 0 - elValue;
alert(elValue); //-1234990.234